OpenKeel: the sovereign French Cloud solution of the inherent group, with a European reach Discover inherent

Reverse-spec · Clients

python-heatclient — Cli commands

CLI commands — python-heatclient — branch stable/2026.2

Branch stable/2026.2 @ 88120f11830d (5.3.0-2-g88120f1) — repository https://opendev.org/openstack/python-heatclient — analysed on 2026-11-01

python-heatclient exposes no API of its own. It is a **plugin of openstack** with 49 commands, a Python API those commands call, and a deprecated heat shell. Its contract with the outside world is the HTTP requests it sends to Heat (interactions, client contract).

[observed] below means seen against a local stub, which is not Heat. It shows what the client sends and does, not what a real service answers.

1. Shared mechanics

  • Plugin loading: entry point openstack.cli.extension = orchestration → heatclient/osc/plugin.py (pyproject.toml:42-43). python-openstackclient imports it, reads API_NAME and API_VERSION_OPTION, and loads the group openstack.orchestration.v<version> (openstackclient:openstackclient/shell.py:94-104).
  • API version: --os-orchestration-api-version or OS_ORCHESTRATION_API_VERSION, default 1, the only supported value (heatclient/osc/plugin.py:22-27, heatclient/osc/plugin.py:63-74). With 2: orchestration API version 2 is not in supported versions: 1, the command is not found, exit 2 [observed, G29].
  • Client construction: make_client builds heatclient.v1.client.Client with the session of the OSC client manager, service_type=orchestration, region_name and interface (heatclient/osc/plugin.py:30-60). **It passes no auth plugin**, which breaks the TempURL path (defect 1 in 02). The branches at heatclient/osc/plugin.py:44-56 run only when instance.session is empty.
  • Managers: Client holds stacks, resources, resource_types, events, actions, build_info, software_deployments, software_configs, services and template_versions (heatclient/v1/client.py:39-56). Each is one Python file under heatclient/v1/. Commands use them for every request, plus http_client directly for template objects.
  • No microversions, no version discovery: the client sends no version header and never reads a version document. Across both probes, the stub's version documents received 0 requests [observed, version_hits in the wire probes]. The catalog URL is used as it is.
  • Stack identification. Two forms exist, and each manager method uses one:
    • Passed as typed, /stacks/{what the user typed}[/sub]: stacks.get, update, delete, template, environment, files, actions.*, events.list without a resource, resources.list. These rely on Heat's 302. keystoneauth follows it and re-sends the same method and body (keystoneauth1:keystoneauth1/session.py:1246) [observed for GET, POST, PUT, PATCH and DELETE].
    • Resolved first: _resolve_stack_id sends GET /stacks/{x} with redirect=False, and takes what follows /stacks/ in Location (heatclient/v1/stacks.py:102-116). A value already holding a / is used as name/id with no request. Every snapshot, output, abandon, export and single-resource call does this.
    • Consequence: <stack> accepts a name, an ID or name/id on every command, with one exception: stack hook poll needs the name (defect 3).
  • Result objects: base.Resource copies the JSON keys to attributes (heatclient/common/base.py:452-459). Objects from a list are marked loaded; those from a get are not, and a missing attribute triggers a second GET (heatclient/common/base.py:461-468). That second path ends in an error on the session client (defect 7).
  • Output types:
    • ShowOne and Lister print through cliff.
    • heatclient/common/format_utils.py:20-55 provides RawFormat subclasses with another default format: JSON (stack abandon, stack export, stack resource metadata, software config create) or YAML (stack environment show, stack file list, stack template show, stack snapshot show, software deployment create, software config show, orchestration resource type show, orchestration template validate). When the action returns data=None, they print nothing.
    • stack event list defaults to the log formatter, from its own namespace (heatclient/osc/v1/event.py:90-96, pyproject.toml:95-101).
    • stack resource list accepts -f dot for Graphviz (heatclient/osc/v1/resource.py:78-80, heatclient/common/resource_formatter.py:40-46).
  • Global options: identical to any OSC plugin (--os-*, clouds.yaml, --os-region-name, --insecure), handled by osc-lib, not by this package.

Parameters, templates and environments

These rules are shared by stack create, stack update, stack adopt, orchestration template validate:

  • **--parameter** (heatclient/common/utils.py:322-349): key=value. When given once, the value is split on ; first, so a=1;b=2 gives two parameters and a=1;2 is refused with Malformed parameter(2) [observed, D21]. A repeated key becomes a list.
  • **--parameter-file** (heatclient/common/utils.py:363-386): key=path; the path is resolved relative to the template's directory, not the current one, and the content is sent as the value. Non UTF-8 content is base64 encoded (heatclient/common/utils.py:416-420). Only stack create and stack update have it. If a key repeats, a raw TypeError follows [observed, D20].
  • Template (heatclient/common/template_utils.py:29-56):
    1. a path becomes a file:// URL (heatclient/common/utils.py:430-433) and is read by urlopen, so -t also takes http:// and any scheme urllib knows;
    2. on URLError, the same string is requested from Heat with the token, as a template object: GET <endpoint>/<string> [observed, G25]; a 404 re-raises the first error;
    3. the text is parsed as JSON if it starts with {, otherwise YAML with a safe loader that keeps timestamps as strings (heatclient/common/template_format.py:53-82). One of HeatTemplateFormatVersion, heat_template_version or AWSTemplateFormatVersion must be present.
  • Child files (heatclient/common/template_utils.py:110-178): every get_file: <value>, and every type: <value> ending in .yaml or .template, is resolved against the template's URL, read, stored in files under the absolute URL, and replaced by that URL in the template. Files that parse as templates are processed recursively and stored as JSON.
  • **-s, --files-container**: skips this resolution (fetch_child=False, heatclient/osc/v1/stack.py:142) and sends files_container; environments are then listed by path and not read (heatclient/common/template_utils.py:259-281).
  • Environments (heatclient/common/template_utils.py:216-335): each -e file is parsed, checked against the allowed sections (heatclient/common/environment_format.py:19-27), deep-merged into environment, and its URLs in resource_registry are fetched into files. Because env_list_tracker is set, the raw file also goes to files and its URL to environment_files, so that Heat does the merge [observed, variant with -e in the wire probes].
  • Hooks: --pre-create and --pre-update add {"hooks": "<type>"} under resource_registry.resources.<path> (heatclient/common/template_utils.py:377-398).

2. Functional description by family

Stack lifecycle

  • **stack create** (heatclient/osc/v1/stack.py:38-213). Purpose: submit a template, and optionally wait for it.
    • Body: stack_name, disable_rollback (true unless --enable-rollback), parameters, template, files, environment, and when set environment_files, files_container, tags, timeout_mins [observed, G01]. --timeout 0 is falsy and not sent.
    • Flow: POST /stacks, then --wait polling by name, then GET /stacks/{id}?resolve_outputs=False for the short table.
    • --dry-run sends the same body to POST /stacks/preview and prints the full preview (heatclient/osc/v1/stack.py:181-203).
    • Outcome: the command returns as soon as Heat accepts; the stack is usually CREATE_IN_PROGRESS.
  • **stack update** (heatclient/osc/v1/stack.py:216-414). Purpose: change a stack.
    • PUT /stacks/{x}, or PATCH with --existing, where template may be null [observed, G06].
    • Without -t or --existing: Need to specify exactly one of [--template-file, --template-url or --template-object] or --existing, naming options that do not exist here (defect 9).
    • --rollback enabled|disabled sets disable_rollback, and keep omits it. --clear-parameter gives clear_parameters. --converge gives converge: true, not sent with --dry-run.
    • --dry-run resolves the name, then PUT or PATCH /stacks/{name}/{id}/preview[?show_nested=True], and prints each list of resource_changes (heatclient/osc/v1/stack.py:378-391) [observed, G07].
  • **stack delete** (heatclient/osc/v1/stack.py:722-813): takes several stacks.
    • The prompt appears only if stdin is a terminal and --yes is absent (heatclient/osc/v1/stack.py:753).
    • A 404 or 403 on one stack prints a line on stdout, and the others continue; the end message is Unable to delete 2 of the 3 stacks. with exit 1 [observed, G09]. Any other error stops the loop.
  • **stack adopt** (heatclient/osc/v1/stack.py:816-898): POST /stacks with adopt_stack_data as a string holding the file, and the files of that file merged with those of the environments. --timeout is sent under the wrong key (defect 5).
  • **stack abandon** (heatclient/osc/v1/stack.py:901-942): DELETE /stacks/{name}/{id}/abandon, prints JSON or writes --output-file. **stack export** (heatclient/osc/v1/stack.py:945-986): same with GET …/export, and the stack stays.
  • **stack suspend, resume, check** (heatclient/osc/v1/stack.py:1165-1267): for each stack, POST /stacks/{x}/actions with {"suspend": null}, {"resume": null} or {"check": null}, then a GET for the row. The first 404 ends the command, so earlier stacks are already actioned.
  • **stack cancel** (heatclient/osc/v1/stack.py:1270-1332): reads the status first. Without --no-rollback it needs UPDATE_IN_PROGRESS and sends cancel_update; with it, CREATE_ or UPDATE_IN_PROGRESS and cancel_without_rollback. Otherwise it stops on the client [observed, G28].
  • **stack show** (heatclient/osc/v1/stack.py:417-490): GET /stacks/{x}, with ?resolve_outputs=False under --no-resolve-outputs. Columns: a fixed list, then any other key except template_description.
  • **stack list** (heatclient/osc/v1/stack.py:493-719): see the query mapping in 03.
    • Sorting (--sort) is client-side, so it applies to the fetched page only (heatclient/osc/v1/stack.py:714).
    • --limit is paged on the client: the manager re-requests with the remainder and a marker until the count is reached or a page is empty (heatclient/v1/stacks.py:132-146) [observed, G10]. Without --limit, one request: the client relies on Heat's own limit.
    • --project resolves the name through Keystone. A project key in a result adds the column (heatclient/osc/v1/stack.py:710-713).
    • --long and --all-projects: see defect 2. --tag-mode is ignored without --tags (heatclient/osc/v1/stack.py:678-690).
  • **stack template show, environment show, file list** (heatclient/osc/v1/stack.py:595-653, heatclient/osc/v1/stack.py:1106-1131): read-only views of what Heat stored.

Stack outputs

  • **stack output list** (heatclient/osc/v1/stack.py:1069-1103): GET …/outputs; on 404, it falls back to the outputs of the stack, written for older servers. A stack without that key then gives a bare KeyError [observed, D12].
  • **stack output show** (heatclient/osc/v1/stack.py:989-1066): needs exactly one of <output> and --all. A single output has the same fallback [observed, G24]. An output_error in the answer becomes Output error: ….

Resources

  • **stack resource list** (heatclient/osc/v1/resource.py:73-147): query nested_depth, with_detail, and filters.
  • **stack resource show** (heatclient/osc/v1/resource.py:30-70): ?with_attr= per --with-attr.
  • **stack resource metadata** (heatclient/osc/v1/resource.py:150-188).
  • **stack resource signal** (heatclient/osc/v1/resource.py:191-255): --data or --data-file, JSON dict only, checked on the client. With neither, the body is the JSON text null [observed, G30].
  • **stack resource mark unhealthy** (heatclient/osc/v1/resource.py:258-303): PATCH with mark_unhealthy (false under --reset) and resource_status_reason.

Events

  • **stack event list** (heatclient/osc/v1/event.py:85-240): always sends sort_dir (asc by default, or the direction of the first --sort). sort_keys goes to the server, and sorting is applied again on the client. --resource and --nested-depth exclude each other. --follow: see 05.
  • **stack event show** (heatclient/osc/v1/event.py:29-82): 3 reads, stack then resource then event, so that a 404 tells which is missing through Heat's message [observed, G31].

Hooks

Breakpoints are paused resources that Heat reports only through events.

  • **stack hook poll** (heatclient/osc/v1/stack.py:1335-1401, heatclient/common/event_utils.py:24-65): gets the stack and derives the hook type from its status (heatclient/common/hook_utils.py:56-79); refuses if not IN_PROGRESS; reads all events, keeps those after the last Stack <ACTION> started of this stack, and drops resources that have a later "cleared" event. The texts are literal.
  • **stack hook clear** (heatclient/osc/v1/stack.py:1404-1470, heatclient/common/hook_utils.py:22-53): the type comes from --pre-create, --pre-update, --pre-delete or the stack status. a/b*/c* walks nested stacks with fnmatch, and each match gets POST …/signal with {"unset_hook": "<type>"} [observed, G18]. No match, or a 404 on the signal, still exits 0 (defect 10).

Snapshots

stack snapshot create|list|show|delete|restore (heatclient/osc/v1/snapshot.py:28-238) map one to one to /stacks/{name}/{id}/snapshots[/{id}[/restore]]. delete prompts like stack delete.

Failure report

**stack failures list** (heatclient/osc/v1/stack_failures.py:24-136): for a stack whose status ends in FAILED, walks failed resources, descends into those with a nested link, and keeps the deepest failure. Deployment resources also get their deploy_stdout and deploy_stderr, the last 10 lines unless --long (heatclient/common/format_utils.py:58-75) [observed, G16]. Not failed: prints nothing, exit 0.

Software configs and deployments

  • **software config create** (heatclient/osc/v1/software_config.py:111-186): reads --definition-file as a YAML map of inputs, outputs, options, and --config-file as the raw script; their help texts are swapped (defect 9). It first validates a mini-template holding the config through POST /validate, then POST /software_configs [observed, G22].
  • **software config list|show|delete** (heatclient/osc/v1/software_config.py:31-108, heatclient/osc/v1/software_config.py:189-240): delete hides the reason of non-404 failures behind the final count (heatclient/osc/v1/software_config.py:60-64).
  • **software deployment create** (heatclient/osc/v1/software_deployment.py:30-130): reads the source config if --config is given, builds a derived config whose inputs are the source's, the --input-value ones and the deploy_* ones (heatclient/common/deployment_utils.py:25-91) [observed, G20], creates it, then creates the deployment with status: IN_PROGRESS. Only TEMP_URL_SIGNAL (default, broken here) and NO_SIGNAL are accepted; the help also lists ZAQAR_SIGNAL, which is refused (defect 9).
  • **software deployment delete** (heatclient/osc/v1/software_deployment.py:133-179): reads the deployment, deletes it, then best-effort deletes its config. A 404 on the config only prints a line [observed, G21].
  • **software deployment list|show|metadata show|output show** (heatclient/osc/v1/software_deployment.py:182-356).

Service information

orchestration build info, service list, template version list, template function list, resource type list|show, and template validate (heatclient/osc/v1/build_info.py:24, heatclient/osc/v1/service.py:22, heatclient/osc/v1/template.py:34-188, heatclient/osc/v1/resource_type.py:27-129). resource type show --template-type hot|cfn generates a template, and the value is checked on the client. template version list reads versions[1] to find out whether aliases exist (defect 4).

Stack status lifecycle, as the client sees it

The client never computes a status; it compares strings from Heat.

stateDiagram-v2
  [*] --> CREATE_IN_PROGRESS: POST /stacks (stack create, adopt uses ADOPT_*)
  CREATE_IN_PROGRESS --> CREATE_COMPLETE: Heat, seen by --wait
  CREATE_IN_PROGRESS --> CREATE_FAILED: Heat, --wait exits 1
  CREATE_COMPLETE --> UPDATE_IN_PROGRESS: PUT or PATCH (stack update)
  UPDATE_IN_PROGRESS --> UPDATE_COMPLETE: Heat
  UPDATE_IN_PROGRESS --> UPDATE_FAILED: Heat, --wait exits 1
  UPDATE_IN_PROGRESS --> ROLLBACK_IN_PROGRESS: stack cancel (cancel_update) [inferred, done by Heat]
  CREATE_COMPLETE --> SUSPEND_IN_PROGRESS: actions suspend
  SUSPEND_IN_PROGRESS --> SUSPEND_COMPLETE: Heat
  SUSPEND_COMPLETE --> RESUME_IN_PROGRESS: actions resume
  CREATE_COMPLETE --> CHECK_IN_PROGRESS: actions check
  CREATE_COMPLETE --> DELETE_IN_PROGRESS: DELETE (stack delete)
  DELETE_IN_PROGRESS --> [*]: 404 on events ends --wait
  DELETE_IN_PROGRESS --> DELETE_FAILED: Heat, --wait exits 1

3. Python API and legacy shell

  • Used by the commands: all of heatclient/v1/ except software_deployments.update and resources.generate_template; heatclient/common/ in full, except wait_for_events and the printing helpers of heatclient/common/utils.py, which serve the legacy shell.
  • HTTP clients: _construct_http_client picks SessionClient when a session exists, otherwise the older HTTPClient (heatclient/common/http.py:347-372). **The OSC path always gets SessionClient** [observed: last_request_id is missing, D08]. HTTPClient exists for heat --os-no-client-auth (heatclient/shell.py:496-508), and it can send the password in X-Auth-Key when asked to (heatclient/common/http.py:175-176, heatclient/common/http.py:256-259).
  • **heat shell**: heatclient/shell.py:421-560 builds its own parser and session, then calls do_<command> from heatclient/v1/shell.py. Its functions warn "heat stack-create" is deprecated, please use "openstack stack create" instead (heatclient/v1/shell.py:37-40). It shares managers and helpers with OSC. It passes auth to the client (heatclient/shell.py:535-546), so TempURL works there [observed, L02].

4. Command sheets

Generated from _rewrite/cli-commands_stable-2026.2.json and the wire probes. The requests listed use the stub's synthetic arguments, so they are not every route a command can use: _rewrite/client-contract_stable-2026.2.json adds those read in the source.

openstack orchestration build info

Retrieve build information. Class heatclient.osc.v1.build_info:BuildInfo, defined at heatclient/osc/v1/build_info.py:24. Output: single. Unit vectors: 1.

Requests observed on the stub, all argv variants [observed]: GET /build_info.

openstack orchestration resource type list

List resource types. Class heatclient.osc.v1.resource_type:ResourceTypeList, defined at heatclient/osc/v1/resource_type.py:86. Output: list. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
--filterAppendFilter parameters to apply on returned resource types. This can be specified multiple times. It can be any of name, version or support_status
--longStoreTrueShow resource types with corresponding description of each resource type.

Requests observed on the stub, all argv variants [observed]: GET /resource_types.

openstack orchestration resource type show

Show details and optionally generate a template for a resource type. Class heatclient.osc.v1.resource_type:ResourceTypeShow, defined at heatclient/osc/v1/resource_type.py:27. Output: single. Unit vectors: 10.

ArgumentType / actionDefaultRequiredHelp
resource_typeStoreyesResource type to show details for
--template-typeStoreOptional template type to generate, hot or cfn
--longStoreTrueShow resource type with corresponding description.

Requests observed on the stub, all argv variants [observed]: GET /resource_types/{type_name}; GET /resource_types/{type_name}/template.

openstack orchestration service list

List the Heat engines. Class heatclient.osc.v1.service:ListService, defined at heatclient/osc/v1/service.py:22. Output: list. Unit vectors: 1.

Requests observed on the stub, all argv variants [observed]: GET /services.

openstack orchestration template function list

List the available functions. Class heatclient.osc.v1.template:FunctionList, defined at heatclient/osc/v1/template.py:61. Output: list. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
template_versionStoreyesTemplate version to get the functions for
--with_conditionsStoreTrueShow condition functions for template.

Requests observed on the stub, all argv variants [observed]: GET /template_versions/{template_version}/functions.

openstack orchestration template validate

Validate a template Class heatclient.osc.v1.template:Validate, defined at heatclient/osc/v1/template.py:102. Output: single. Unit vectors: 5.

ArgumentType / actionDefaultRequiredHelp
-e, --environmentAppendPath to the environment. Can be specified multiple times
--show-nestedStoreTrueResolve parameters from nested templates as well
--parameterAppendParameter values used to create the stack. This can be specified multiple times
-s, --files-containerStoreSwift files container name. Local files other than root template would be ignored. If other files are not found in swift, heat engine would raise an e
--ignore-errorsStoreList of heat errors to ignore
-t, --templateStoreyesPath to the template

Requests observed on the stub, all argv variants [observed]: POST /validate.

openstack orchestration template version list

List the available template versions. Class heatclient.osc.v1.template:VersionList, defined at heatclient/osc/v1/template.py:34. Output: list. Unit vectors: 2.

Requests observed on the stub, all argv variants [observed]: GET /template_versions.

openstack software config create

Create software config Class heatclient.osc.v1.software_config:CreateConfig, defined at heatclient/osc/v1/software_config.py:111. Output: single. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
nameStoreyesName of the software config to create
--config-fileStorePath to JSON/YAML containing map defining <inputs>, <outputs>, and <options>
--definition-fileStorePath to software config script/data
--groupStoreHeat::UngroupedGroup name of tool expected by the software config

Requests observed on the stub, all argv variants [observed]: POST /validate; POST /software_configs.

openstack software config delete

Delete software configs Class heatclient.osc.v1.software_config:DeleteConfig, defined at heatclient/osc/v1/software_config.py:31. Output: none. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
configStore (+)yesIDs of the software configs to delete

Requests observed on the stub, all argv variants [observed]: DELETE /software_configs/{config_id}.

openstack software config list

List software configs Class heatclient.osc.v1.software_config:ListConfig, defined at heatclient/osc/v1/software_config.py:73. Output: list. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
--limitintLimit the number of configs returned
--markerStoreReturn configs that appear after the given config ID

Requests observed on the stub, all argv variants [observed]: GET /software_configs.

openstack software config show

Show software config details Class heatclient.osc.v1.software_config:ShowConfig, defined at heatclient/osc/v1/software_config.py:189. Output: single. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
configStoreyesID of the config
--config-onlyStoreTrueOnly display the value of the <config> property.

Requests observed on the stub, all argv variants [observed]: GET /software_configs/{config_id}.

openstack software deployment create

Create a software deployment. Class heatclient.osc.v1.software_deployment:CreateDeployment, defined at heatclient/osc/v1/software_deployment.py:30. Output: single. Unit vectors: 7.

ArgumentType / actionDefaultRequiredHelp
nameStoreyesName of the derived config associated with this deployment. This is used to apply a sort order to the list of configurations currently deployed to the
--input-valueAppendInput value to set on the deployment. This can be specified multiple times.
--actionStoreUPDATEName of an action for this deployment. This can be a custom action, or one of CREATE, UPDATE, DELETE, SUSPEND, RESUME. Default is UPDATE
--configStoreID of the configuration to deploy
--signal-transportStoreTEMP_URL_SIGNALHow the server should signal to heat with the deployment output values. TEMP_URL_SIGNAL will create a Swift TempURL to be signaled via HTTP PUT. ZAQAR
--containerStoreOptional name of container to store TEMP_URL_SIGNAL objects in. If not specified a container will be created with a name derived from the DEPLOY_NAME
--timeoutint60Deployment timeout in minutes
--serverStoreyesID of the server being deployed to

Requests observed on the stub, all argv variants [observed]: POST /software_configs; GET /software_configs/{config_id}.

openstack software deployment delete

Delete software deployment(s) and correlative config(s). Class heatclient.osc.v1.software_deployment:DeleteDeployment, defined at heatclient/osc/v1/software_deployment.py:133. Output: none. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
deploymentStore (+)yesID of the deployment(s) to delete.

Requests observed on the stub, all argv variants [observed]: GET /software_deployments/{deployment_id}.

openstack software deployment list

List software deployments. Class heatclient.osc.v1.software_deployment:ListDeployment, defined at heatclient/osc/v1/software_deployment.py:182. Output: list. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
--serverStoreID of the server to fetch deployments for
--longStoreTrueList more fields in output

Requests observed on the stub, all argv variants [observed]: GET /software_deployments.

openstack software deployment metadata show

Get deployment configuration metadata for the specified server. Class heatclient.osc.v1.software_deployment:ShowMetadataDeployment, defined at heatclient/osc/v1/software_deployment.py:269. Output: none. Unit vectors: 1.

ArgumentType / actionDefaultRequiredHelp
serverStoreyesID of the server to fetch deployments for

Requests observed on the stub, all argv variants [observed]: GET /software_deployments/metadata/{server_id}.

openstack software deployment output show

Show a specific deployment output. Class heatclient.osc.v1.software_deployment:ShowOutputDeployment, defined at heatclient/osc/v1/software_deployment.py:291. Output: none. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
deploymentStoreyesID of deployment to show the output for
outputStore (?)Name of an output to display
--allStoreTrueDisplay all deployment outputs
--longStoreTrueShow full deployment logs in output

Requests observed on the stub, all argv variants [observed]: GET /software_deployments/{deployment_id}.

openstack software deployment show

Show SoftwareDeployment Details. Class heatclient.osc.v1.software_deployment:ShowDeployment, defined at heatclient/osc/v1/software_deployment.py:222. Output: single. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
deploymentStoreyesID of the deployment
--longStoreTrueShow more fields in output

Requests observed on the stub, all argv variants [observed]: GET /software_deployments/{deployment_id}.

openstack stack abandon

Abandon stack and output results. Class heatclient.osc.v1.stack:AbandonStack, defined at heatclient/osc/v1/stack.py:901. Output: single. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to abandon
--output-fileStoreFile to output abandon results

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; DELETE /stacks/{stack_name}/{stack_id}/abandon.

openstack stack adopt

Adopt a stack. Class heatclient.osc.v1.stack:AdoptStack, defined at heatclient/osc/v1/stack.py:816. Output: single. Unit vectors: 5.

ArgumentType / actionDefaultRequiredHelp
nameStoreyesName of the stack to adopt
-e, --environmentAppendPath to the environment. Can be specified multiple times
--timeoutintStack creation timeout in minutes
--enable-rollbackStoreTrueEnable rollback on create/update failure
--parameterAppendParameter values used to create the stack. Can be specified multiple times
--waitStoreTrueWait until stack adopt completes
--adopt-fileStoreyesPath to adopt stack data file

Requests observed on the stub, all argv variants [observed]: POST /stacks.

openstack stack cancel

Cancel current task for a stack. Class heatclient.osc.v1.stack:CancelStack, defined at heatclient/osc/v1/stack.py:1270. Output: list. Unit vectors: 8.

ArgumentType / actionDefaultRequiredHelp
stackStore (+)yesStack(s) to cancel (name or ID)
--waitStoreTrueWait for cancel to complete
--no-rollbackStoreTrueCancel without rollback

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack check

Check a stack. Class heatclient.osc.v1.stack:CheckStack, defined at heatclient/osc/v1/stack.py:1250. Output: list. Unit vectors: 5.

ArgumentType / actionDefaultRequiredHelp
stackStore (+)yesStack(s) to check update (name or ID)
--waitStoreTrueWait for check to complete

Requests observed on the stub, all argv variants [observed]: POST /stacks/{stack_name_or_id}/actions; POST /stacks/{stack_name}/{stack_id}/actions; GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack create

Create a stack. Class heatclient.osc.v1.stack:CreateStack, defined at heatclient/osc/v1/stack.py:38. Output: single. Unit vectors: 11.

ArgumentType / actionDefaultRequiredHelp
nameStoreyesName of the stack to create
-e, --environmentAppendPath to the environment. Can be specified multiple times
-s, --files-containerStoreSwift files container name. Local files other than root template would be ignored. If other files are not found in swift, heat engine would raise an e
--timeoutintStack creating timeout in minutes
--pre-createAppendName of a resource to set a pre-create hook to. Resources in nested stacks can be set using slash as a separator: nested_stack/another/my_resource
--enable-rollbackStoreTrueEnable rollback on create/update failure
--parameterAppendParameter values used to create the stack. This can be specified multiple times
--parameter-fileAppendParameter values from file used to create the stack. This can be specified multiple times. Parameter values would be the content of the file
--waitStoreTrueWait until stack goes to CREATE_COMPLETE or CREATE_FAILED
--pollint5Poll interval in seconds for use with --wait, defaults to 5.
--tagsStoreA list of tags to associate with the stack
--dry-runStoreTrueDo not actually perform the stack create, but show what would be created
-t, --templateStoreyesPath to the template

Requests observed on the stub, all argv variants [observed]: POST /stacks; POST /stacks/preview.

openstack stack delete

Delete stack(s). Class heatclient.osc.v1.stack:DeleteStack, defined at heatclient/osc/v1/stack.py:722. Output: none. Unit vectors: 8.

ArgumentType / actionDefaultRequiredHelp
stackStore (+)yesStack(s) to delete (name or ID)
-y, --yesStoreTrueSkip yes/no prompt (assume yes)
--waitStoreTrueWait for stack delete to complete

Requests observed on the stub, all argv variants [observed]: DELETE /stacks/{stack_name_or_id}; DELETE /stacks/{stack_name}/{stack_id}.

openstack stack environment show

Show a stack's environment. Class heatclient.osc.v1.stack:EnvironmentShowStack, defined at heatclient/osc/v1/stack.py:595. Output: single. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}/environment; GET /stacks/{stack_name}/{stack_id}/environment.

openstack stack event list

List events. Class heatclient.osc.v1.event:ListEvent, defined at heatclient/osc/v1/event.py:85. Output: list. Unit vectors: 9.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to show events for
--resourceStoreName of resource to show events for. Note: this cannot be specified with --nested-depth
--filterAppendFilter parameters to apply on returned events
--limitintLimit the number of events returned
--markerStoreOnly return events that appear after the given ID
--nested-depthintDepth of nested stacks from which to display events. Note: this cannot be specified with --resource
--sortAppendSort output by selected keys and directions (asc or desc) (default: asc). Specify multiple times to sort on multiple keys. Sort key can be: "event_tim
--followStoreTruePrint events until process is halted

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}/events; GET /stacks/{stack_name}/{stack_id}/events; GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/resources/{resource_name}/events.

openstack stack event show

Show event details. Class heatclient.osc.v1.event:ShowEvent, defined at heatclient/osc/v1/event.py:29. Output: single. Unit vectors: 12.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to show events for
resourceStoreyesName of the resource event belongs to
eventStoreyesID of event to display details for

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack export

Export stack data json. Class heatclient.osc.v1.stack:ExportStack, defined at heatclient/osc/v1/stack.py:945. Output: single. Unit vectors: 2.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to export
--output-fileStoreFile to output export data

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/export.

openstack stack failures list

Show information about failed stack resources. Class heatclient.osc.v1.stack_failures:ListStackFailures, defined at heatclient/osc/v1/stack_failures.py:24. Output: none. Unit vectors: 2.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesStack to display (name or ID)
--longStoreTrueShow full deployment logs in output

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack file list

Show a stack's files map. Class heatclient.osc.v1.stack:ListFileStack, defined at heatclient/osc/v1/stack.py:628. Output: single. Unit vectors: 0.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}/files; GET /stacks/{stack_name}/{stack_id}/files.

openstack stack hook clear

Clear resource hooks on a given stack. Class heatclient.osc.v1.stack:StackHookClear, defined at heatclient/osc/v1/stack.py:1404. Output: none. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesStack to display (name or ID)
hookStore (+)yesResource names with hooks to clear. Resources in nested stacks can be set using slash as a separator: nested_stack/another/my_resource. You can us
--pre-createStoreTrueClear the pre-create hooks
--pre-updateStoreTrueClear the pre-update hooks
--pre-deleteStoreTrueClear the pre-delete hooks

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}; GET /stacks/{stack_name_or_id}/resources; GET /stacks/{stack_name}/{stack_id}/resources.

openstack stack hook poll

List resources with pending hook for a stack. Class heatclient.osc.v1.stack:StackHookPoll, defined at heatclient/osc/v1/stack.py:1335. Output: list. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesStack to display (name or ID)
--nested-depthStoreDepth of nested stacks from which to display hooks

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack list

List stacks. Class heatclient.osc.v1.stack:ListStack, defined at heatclient/osc/v1/stack.py:493. Output: list. Unit vectors: 13.

ArgumentType / actionDefaultRequiredHelp
--deletedStoreTrueInclude soft-deleted stacks in the stack listing
--nestedStoreTrueInclude nested stacks in the stack listing
--hiddenStoreTrueInclude hidden stacks in the stack listing
--propertyAppendFilter properties to apply on returned stacks (repeat to filter on multiple properties)
--projectStoreFilter stacks by project (name or ID) (admin only)
--project-domainStoreDomain the project belongs to (name or ID). This can be used in case collisions between project names exist.
--tagsStoreList of tags to filter by. Can be combined with --tag-mode to specify how to filter tags
--tag-modeStoreMethod of filtering tags. Must be one of "any", "not", or "not-any". If not specified, multiple tags will be combined with the boolean AND expression
--limitintThe number of stacks returned
--markerStoreOnly return stacks that appear after the given ID
--sortStoreSort output by selected keys and directions (asc or desc) (default: asc). Specify multiple times to sort on multiple properties
--all-projectsStoreTrueInclude all projects (admin only)
--shortStoreTrueList fewer fields in output
--longStoreTrueList additional fields in output, this is implied by --all-projects

Requests observed on the stub, all argv variants [observed]: GET /stacks; GET /v3/projects/{project}; GET /v3/projects.

openstack stack output list

List stack outputs. Class heatclient.osc.v1.stack:OutputListStack, defined at heatclient/osc/v1/stack.py:1069. Output: list. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/outputs; GET /stacks/{stack_name}/{stack_id}.

openstack stack output show

Show stack output. Class heatclient.osc.v1.stack:OutputShowStack, defined at heatclient/osc/v1/stack.py:989. Output: single. Unit vectors: 8.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query
outputStore (?)Name of an output to display
--allStoreTrueDisplay all stack outputs

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/outputs/{output_key}; GET /stacks/{stack_name}/{stack_id}.

openstack stack resource list

List stack resources. Class heatclient.osc.v1.resource:ResourceList, defined at heatclient/osc/v1/resource.py:73. Output: list. Unit vectors: 6.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query
--longStoreTrueEnable detailed information presented for each resource in resource list
-n, --nested-depthintDepth of nested stacks from which to display resources
--filterAppendFilter parameters to apply on returned resources based on their name, status, type, action, id and physical_resource_id

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}/resources; GET /stacks/{stack_name}/{stack_id}/resources.

openstack stack resource mark unhealthy

Set resource's health. Class heatclient.osc.v1.resource:ResourceMarkUnhealthy, defined at heatclient/osc/v1/resource.py:258. Output: none. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack the resource belongs to
resourceStoreyesName of the resource
reasonStore (?)Reason for state change
--resetStoreTrueSet the resource as healthy

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; PATCH /stacks/{stack_name}/{stack_id}/resources/{resource_name}.

openstack stack resource metadata

Show resource metadata Class heatclient.osc.v1.resource:ResourceMetadata, defined at heatclient/osc/v1/resource.py:150. Output: single. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesStack to display (name or ID)
resourceStoreyesName of the resource to show the metadata for

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/resources/{resource_name}/metadata.

openstack stack resource show

Display stack resource. Class heatclient.osc.v1.resource:ResourceShow, defined at heatclient/osc/v1/resource.py:30. Output: single. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query
resourceStoreyesName of resource
--with-attrAppendAttribute to show, can be specified multiple times

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/resources/{resource_name}.

openstack stack resource signal

Signal a resource with optional data. Class heatclient.osc.v1.resource:ResourceSignal, defined at heatclient/osc/v1/resource.py:191. Output: none. Unit vectors: 6.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack the resource belongs to
resourceStoreyesName of the resoure to signal
--dataStoreJSON Data to send to the signal handler
--data-fileStoreFile containing JSON data to send to the signal handler

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; POST /stacks/{stack_name}/{stack_id}/resources/{resource_name}/signal.

openstack stack resume

Resume a stack. Class heatclient.osc.v1.stack:ResumeStack, defined at heatclient/osc/v1/stack.py:1230. Output: list. Unit vectors: 5.

ArgumentType / actionDefaultRequiredHelp
stackStore (+)yesStack(s) to resume (name or ID)
--waitStoreTrueWait for resume to complete

Requests observed on the stub, all argv variants [observed]: POST /stacks/{stack_name_or_id}/actions; POST /stacks/{stack_name}/{stack_id}/actions; GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack show

Show stack details. Class heatclient.osc.v1.stack:ShowStack, defined at heatclient/osc/v1/stack.py:417. Output: single. Unit vectors: 6.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesStack to display (name or ID)
--no-resolve-outputsStoreTrueDo not resolve outputs of the stack.

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack snapshot create

Create stack snapshot. Class heatclient.osc.v1.snapshot:CreateSnapshot, defined at heatclient/osc/v1/snapshot.py:145. Output: single. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack
--nameStoreName of snapshot

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; POST /stacks/{stack_name}/{stack_id}/snapshots.

openstack stack snapshot delete

Delete stack snapshot. Class heatclient.osc.v1.snapshot:DeleteSnapshot, defined at heatclient/osc/v1/snapshot.py:187. Output: none. Unit vectors: 4.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack
snapshotStoreyesID of stack snapshot
-y, --yesStoreTrueSkip yes/no prompt (assume yes)

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; DELETE /stacks/{stack_name}/{stack_id}/snapshots/{snapshot_id}.

openstack stack snapshot list

List stack snapshots. Class heatclient.osc.v1.snapshot:ListSnapshot, defined at heatclient/osc/v1/snapshot.py:28. Output: list. Unit vectors: 2.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack containing the snapshots

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/snapshots.

openstack stack snapshot restore

Restore stack snapshot Class heatclient.osc.v1.snapshot:RestoreSnapshot, defined at heatclient/osc/v1/snapshot.py:109. Output: none. Unit vectors: 2.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack containing the snapshot
snapshotStoreyesID of the snapshot to restore

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; POST /stacks/{stack_name}/{stack_id}/snapshots/{snapshot_id}/restore.

openstack stack snapshot show

Show stack snapshot. Class heatclient.osc.v1.snapshot:ShowSnapshot, defined at heatclient/osc/v1/snapshot.py:70. Output: single. Unit vectors: 2.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack containing the snapshot
snapshotStoreyesID of the snapshot to show

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}/snapshots/{snapshot_id}.

openstack stack suspend

Suspend a stack. Class heatclient.osc.v1.stack:SuspendStack, defined at heatclient/osc/v1/stack.py:1210. Output: list. Unit vectors: 5.

ArgumentType / actionDefaultRequiredHelp
stackStore (+)yesStack(s) to suspend (name or ID)
--waitStoreTrueWait for suspend to complete

Requests observed on the stub, all argv variants [observed]: POST /stacks/{stack_name_or_id}/actions; POST /stacks/{stack_name}/{stack_id}/actions; GET /stacks/{stack_name_or_id}; GET /stacks/{stack_name}/{stack_id}.

openstack stack template show

Display stack template. Class heatclient.osc.v1.stack:TemplateShowStack, defined at heatclient/osc/v1/stack.py:1106. Output: single. Unit vectors: 3.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to query

Requests observed on the stub, all argv variants [observed]: GET /stacks/{stack_name_or_id}/template; GET /stacks/{stack_name}/{stack_id}/template.

openstack stack update

Update a stack. Class heatclient.osc.v1.stack:UpdateStack, defined at heatclient/osc/v1/stack.py:216. Output: single. Unit vectors: 16.

ArgumentType / actionDefaultRequiredHelp
stackStoreyesName or ID of stack to update
-t, --templateStorePath to the template
-s, --files-containerStoreSwift files container name. Local files other than root template would be ignored. If other files are not found in swift, heat engine would raise an e
-e, --environmentAppendPath to the environment. Can be specified multiple times
--pre-updateAppendName of a resource to set a pre-update hook to. Resources in nested stacks can be set using slash as a separator: nested_stack/another/my_resource
--timeoutintStack update timeout in minutes
--rollbackStorekeepSet rollback on update failure. Value "enabled" sets rollback to enabled. Value "disabled" sets rollback to disabled. Value "keep" uses the value of e
--dry-runStoreTrueDo not actually perform the stack update, but show what would be changed
--show-nestedStoreTrueShow nested stacks when performing --dry-run
--parameterAppendParameter values used to create the stack. This can be specified multiple times
--parameter-fileAppendParameter values from file used to create the stack. This can be specified multiple times. Parameter value would be the content of the file
--existingStoreTrueRe-use the template, parameters and environment of the current stack. If the template argument is omitted then the existing template is used. If no --
--clear-parameterAppendRemove the parameters from the set of parameters of current stack for the stack-update. The default value in the template will be used. This can be sp
--tagsStoreAn updated list of tags to associate with the stack
--waitStoreTrueWait until stack goes to UPDATE_COMPLETE or UPDATE_FAILED
--convergeStoreTrueStack update with observe on reality.

Requests observed on the stub, all argv variants [observed]: PATCH /stacks/{stack_name_or_id}; PATCH /stacks/{stack_name}/{stack_id}; GET /stacks/{stack_name_or_id}; PUT /stacks/{stack_name}/{stack_id}/preview; PATCH /stacks/{stack_name}/{stack_id}/preview; PUT /stacks/{stack_name_or_id}; PUT /stacks/{stack_name}/{stack_id}; GET /stacks/{stack_name}/{stack_id}.

Source: reverse-spec-python-heatclient/01-cli-commands_stable-2026.2.md. The _rewrite/ and _inventory/ files are not published on the site.