{"library":"python-novaclient","title":"OpenStack Compute (Nova) Client","description":"python-novaclient is a client library for the OpenStack Compute (Nova) API, enabling Python applications to programmatically interact with OpenStack's compute resources. It provides a comprehensive Python API (the `novaclient` module) to manage virtual servers, images, flavors, and other Nova-related services. This library is actively developed as part of the OpenStack ecosystem, with releases typically synchronized with OpenStack major versions, and the current version is 18.12.0.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install python-novaclient"],"cli":{"name":"nova","version":"nova CLI is deprecated and will be removed in a future release"}},"imports":["from novaclient import client\nnova_client = client.Client(api_version='2.latest', ...)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom novaclient import client\n\n# OpenStack credentials (often sourced from an 'openrc' file)\nOS_USERNAME = os.environ.get('OS_USERNAME', 'your_username')\nOS_PASSWORD = os.environ.get('OS_PASSWORD', 'your_password')\nOS_PROJECT_NAME = os.environ.get('OS_PROJECT_NAME', 'your_project_name')\nOS_AUTH_URL = os.environ.get('OS_AUTH_URL', 'http://your_keystone_ip:5000/v3')\nOS_REGION_NAME = os.environ.get('OS_REGION_NAME', 'RegionOne')\nOS_USER_DOMAIN_NAME = os.environ.get('OS_USER_DOMAIN_NAME', 'Default')\nOS_PROJECT_DOMAIN_NAME = os.environ.get('OS_PROJECT_DOMAIN_NAME', 'Default')\n\n# Initialize the Nova client\n# For robust authentication, consider using keystoneauth1.session.Session\n# and passing it to the client for 'session' parameter.\n# Example: from keystoneauth1.identity import v3; from keystoneauth1 import session\n# auth = v3.Password(auth_url=OS_AUTH_URL, username=OS_USERNAME, ...)\n# sess = session.Session(auth=auth)\n# nova = client.Client(api_version='2.latest', session=sess, region_name=OS_REGION_NAME)\n\n# Using direct parameters for simplicity in quickstart, but keystoneauth1 is better for production\nnova = client.Client(\n    api_version='2.latest',\n    username=OS_USERNAME,\n    password=OS_PASSWORD,\n    project_name=OS_PROJECT_NAME,\n    auth_url=OS_AUTH_URL,\n    region_name=OS_REGION_NAME,\n    user_domain_name=OS_USER_DOMAIN_NAME,\n    project_domain_name=OS_PROJECT_DOMAIN_NAME\n)\n\n# List available flavors (instance types)\ntry:\n    flavors = nova.flavors.list()\n    print(f\"Available Flavors ({len(flavors)}):\")\n    for flavor in flavors:\n        print(f\"  - {flavor.name} (ID: {flavor.id}, RAM: {flavor.ram}MB, VCPUs: {flavor.vcpus})\")\n\n    # List available servers\n    servers = nova.servers.list()\n    print(f\"\\nRunning Servers ({len(servers)}):\")\n    if not servers:\n        print(\"  No servers found.\")\n    for server in servers:\n        print(f\"  - {server.name} (ID: {server.id}, Status: {server.status})\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n    print(\"Please ensure your OpenStack credentials (environment variables) are correctly set.\")\n","lang":"python","description":"This quickstart demonstrates how to initialize the Nova client and perform basic operations like listing available compute flavors and running servers. It uses environment variables for authentication, which is a common practice in OpenStack CLI tools and scripts. For production applications, using `keystoneauth1.session.Session` is the recommended and more robust authentication method.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"18.13.0","pypi_latest":"18.13.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":4.9,"avg_import_s":1.17,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.05,"mem_mb":16,"disk_size":"48.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.6,"import_time_s":0.73,"mem_mb":16,"disk_size":"50M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.51,"mem_mb":17.5,"disk_size":"53.5M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.7,"import_time_s":1.4,"mem_mb":17.5,"disk_size":"55M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.31,"mem_mb":17.1,"disk_size":"53.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.7,"import_time_s":1.43,"mem_mb":17.1,"disk_size":"55M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.23,"mem_mb":18,"disk_size":"53.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.8,"import_time_s":1.27,"mem_mb":18,"disk_size":"55M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.92,"mem_mb":15.5,"disk_size":"50.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-novaclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.6,"import_time_s":0.87,"mem_mb":15.5,"disk_size":"52M"}]}}