{"library":"python-openstackclient","title":"OpenStack Command-line Client","description":"OpenStackClient (OSC) is a command-line client for OpenStack that unifies the command sets for core services like Compute, Identity, Image, Network, Object Store, and Block Storage into a single shell with a uniform structure. It is currently at version 9.0.0 and aligns its release cadence with the broader OpenStack project releases, offering regular updates and support for new features.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":[],"cli":{"name":"openstack","version":null}},"imports":["import subprocess\n# ... or use openstacksdk for direct Python API interaction"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport subprocess\n\n# --- Configuration (choose one method) ---\n# Method 1: Environment Variables (recommended for scripts)\nos.environ['OS_AUTH_URL'] = os.environ.get('OS_AUTH_URL', 'http://<your-keystone-url>/v3')\nos.environ['OS_USERNAME'] = os.environ.get('OS_USERNAME', 'admin')\nos.environ['OS_PASSWORD'] = os.environ.get('OS_PASSWORD', 'your_password')\nos.environ['OS_PROJECT_NAME'] = os.environ.get('OS_PROJECT_NAME', 'admin')\nos.environ['OS_USER_DOMAIN_NAME'] = os.environ.get('OS_USER_DOMAIN_NAME', 'Default')\nos.environ['OS_PROJECT_DOMAIN_NAME'] = os.environ.get('OS_PROJECT_DOMAIN_NAME', 'Default')\nos.environ['OS_IDENTITY_API_VERSION'] = os.environ.get('OS_IDENTITY_API_VERSION', '3')\n\n# Method 2: clouds.yaml (often found in ~/.config/openstack/clouds.yaml)\n# Ensure your clouds.yaml is configured and replace 'my-cloud' with your cloud name\n# If using clouds.yaml, you might not need to set environment variables.\n# Example clouds.yaml content (place in ~/.config/openstack/clouds.yaml or specify via OS_CLIENT_CONFIG_FILE):\n# clouds:\n#   my-cloud:\n#     auth:\n#       auth_url: 'http://<your-keystone-url>/v3'\n#       username: 'admin'\n#       password: 'your_password'\n#       project_name: 'admin'\n#       user_domain_name: 'Default'\n#       project_domain_name: 'Default'\n#     region_name: 'RegionOne'\n\n# Example: List OpenStack projects using the CLI\ntry:\n    print(\"\\n--- Listing OpenStack Projects ---\")\n    # Use 'openstack --os-cloud my-cloud project list' if using clouds.yaml\n    result = subprocess.run(['openstack', 'project', 'list'], capture_output=True, text=True, check=True)\n    print(result.stdout)\n    if result.stderr:\n        print(\"Stderr:\\n\", result.stderr)\n\n    print(\"\\n--- Listing OpenStack Services ---\")\n    result = subprocess.run(['openstack', 'service', 'list'], capture_output=True, text=True, check=True)\n    print(result.stdout)\n    if result.stderr:\n        print(\"Stderr:\\n\", result.stderr)\n\nexcept subprocess.CalledProcessError as e:\n    print(f\"Error executing OpenStack CLI command: {e.cmd}\")\n    print(f\"Return Code: {e.returncode}\")\n    print(f\"Stdout:\\n{e.stdout}\")\n    print(f\"Stderr:\\n{e.stderr}\")\nexcept FileNotFoundError:\n    print(\"Error: 'openstack' command not found. Is OpenStackClient installed and in your PATH?\")\n","lang":"python","description":"This quickstart demonstrates how to interact with the OpenStack CLI programmatically from Python using `subprocess`. It shows two common authentication methods: environment variables (often sourced from an `openrc` file) and `clouds.yaml`. Ensure your OpenStack credentials are set as environment variables or configured in a `clouds.yaml` file for the client to authenticate successfully.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}