{"library":"python-heatclient","title":"OpenStack Heat Orchestration API Client Library","description":"The `python-heatclient` library provides a Python API and a command-line interface for interacting with the OpenStack Heat orchestration service. It allows users to programmatically manage Heat stacks, which orchestrate complex cloud applications using templates. The library is actively maintained as part of the OpenStack project, with its current version being 5.1.0, requiring Python >=3.10.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install python-heatclient"],"cli":{"name":"heat","version":"5.1.0"}},"imports":["from heatclient import client as heat_client","from keystoneauth1.session import Session","from keystoneauth1.loading import get_plugin_loader"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom keystoneauth1 import loading\nfrom keystoneauth1.session import Session\nfrom heatclient import client as heat_client\n\n# --- Authentication --- (replace with your OpenStack credentials or environment variables)\n# For production, consider using environment variables (OS_AUTH_URL, OS_USERNAME, etc.)\n# and 'keystoneauth1.loading.load_auth_from_options' or 'load_from_env'.\n# For simplicity, using hardcoded values for quickstart, but highly discouraged in production.\n\nAUTH_URL = os.environ.get('OS_AUTH_URL', 'http://your-openstack-ip/identity/v3')\nUSERNAME = os.environ.get('OS_USERNAME', 'admin')\nPASSWORD = os.environ.get('OS_PASSWORD', 'your-password')\nPROJECT_NAME = os.environ.get('OS_PROJECT_NAME', 'admin')\nUSER_DOMAIN_NAME = os.environ.get('OS_USER_DOMAIN_NAME', 'Default')\nPROJECT_DOMAIN_NAME = os.environ.get('OS_PROJECT_DOMAIN_NAME', 'Default')\n\n# Load the password authentication plugin\nloader = loading.get_plugin_loader('password')\nauth = loader.load_from_options(\n    auth_url=AUTH_URL,\n    username=USERNAME,\n    password=PASSWORD,\n    project_name=PROJECT_NAME,\n    user_domain_name=USER_DOMAIN_NAME,\n    project_domain_name=PROJECT_DOMAIN_NAME\n)\n\n# Create a Keystone session\nsess = Session(auth=auth)\n\n# Create a Heat client\n# API version '1' is commonly used. 'public' endpoint type is standard.\nheat_client_instance = heat_client.Client(\n    '1', \n    session=sess, \n    endpoint_type='public',\n    service_type='orchestration'\n)\n\n# --- Example Usage: List Stacks ---\ntry:\n    print('Listing Heat stacks:')\n    for stack in heat_client_instance.stacks.list():\n        print(f\"  - Name: {stack.stack_name}, Status: {stack.stack_status}, ID: {stack.id}\")\nexcept Exception as e:\n    print(f\"Error listing stacks: {e}\")","lang":"python","description":"This quickstart demonstrates how to authenticate with OpenStack Keystone and then initialize the Heat client to list existing Heat stacks. It uses the `keystoneauth1` library for robust authentication, which is essential for interacting with OpenStack services. Replace placeholder credentials with your actual OpenStack environment details.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"4.2.0","pypi_latest":"5.2.0","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":9.3,"avg_import_s":0.12,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.11,"mem_mb":3.8,"disk_size":"100.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.8,"import_time_s":0.09,"mem_mb":3.8,"disk_size":"102M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.14,"mem_mb":4.6,"disk_size":"110.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":9.2,"import_time_s":0.13,"mem_mb":4.6,"disk_size":"112M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.16,"mem_mb":5.1,"disk_size":"110.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":9,"import_time_s":0.15,"mem_mb":5.1,"disk_size":"112M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.13,"mem_mb":5.1,"disk_size":"109.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.7,"import_time_s":0.12,"mem_mb":5.1,"disk_size":"111M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.09,"mem_mb":3.8,"disk_size":"102.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-heatclient","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":10.7,"import_time_s":0.07,"mem_mb":3.8,"disk_size":"104M"}]}}