Heat support in python-openstackclient

https://blueprints.launchpad.net/heat/+spec/heat-support-python-openstackclient

Implement a new set of heat commands as python-openstackclient plugins.

Problem description

python-openstackclient is becoming the default command line client for many OpenStack projects. Heat would benefit from implementing all of its client commands as python-openstackclient plugins implemented in the python-heatclient repository.

Proposed change

The intent of this spec is to identify the commands to be implemented and establish conventions for command and argument names. This spec is not intented to be a full and correct specification of command and argument names. The details can be left to the code reviews for the commands themselves.

The following conventions will be adopted for argument flags:

  • Commands which trigger lifecycle actions will have a –wait argument which polls the event list until the stack COMPLETE/FAILED event is emitted.

  • Single character flags will be avoided as per the openstack convention, except for very common arguments such as --template -t, --environment -e

  • When the stack name/ID is specified it will be the first positional argument after the full command names

  • When the resource name is specified it will be the second positional argument after the stack name/ID.

  • show and list commands should show an appropriate quantity of data by default and --short or --long arguments will display a different level of details.

The following heat commands will be implemented for openstack initially suggesting these command names:

Core stack commands

heat stack-create
openstack stack create


heat stack-update
openstack stack update

heat stack-list
openstack stack list

heat stack-show
openstack stack show

heat stack-delete
openstack stack delete

heat output-list
openstack stack output list

heat output-show
openstack stack output show

Other stack commands

heat stack-abandon
openstack stack abandon

heat stack-adopt
openstack stack adopt

heat stack-cancel-update
openstack stack update cancel

heat stack-preview
openstack stack update --dry-run

heat action-check
openstack stack check

heat action-resume
openstack stack resume

heat action-suspend
openstack stack suspend

heat hook-clear
openstack stack hook clear

heat hook-poll
openstack stack hook poll

Resource commands

heat resource-list
openstack stack resource list

heat resource-metadata
openstack stack resource metadata show

heat resource-show
openstack stack resource show

heat resource-signal
openstack stack resource signal

heat resource-type-list
openstack orchestration resource type list

heat resource-type-show
openstack orchestration resource type show

Template commands

heat template-show
openstack stack template show

heat template-validate
openstack stack create --dry-run

heat template-version-list
openstack orchestration template version list

heat resource-type-template
openstack orchestration resource type show --format (hot|cfn)

Event commands

heat event-list
openstack stack event list

heat event-show
openstack stack event show

Software config commands

heat config-create
openstack software config create

heat config-delete
openstack software config delete

heat config-show
openstack software config show

heat config-list
openstack software config list

heat deployment-create
openstack software deployment create

heat deployment-delete
openstack software deployment delete

heat deployment-list
openstack software deployment list

heat deployment-metadata-show
openstack software deployment metadata show

heat deployment-output-show
openstack software deployment output show

heat deployment-show
openstack software deployment show

Snapshot commands

heat stack-restore
openstack stack snapshot restore

heat stack-snapshot
openstack stack snapshot create

heat snapshot-delete
openstack stack snapshot delete

heat snapshot-list
openstack stack snapshot list

heat snapshot-show
openstack stack snapshot show

Misc commands

heat build-info
openstack orchestration build-info

heat service-list
openstack service list (need to integrate with existing command)

Alternatives

  • Continue to evolve heat commands and do not implement any openstack commands.

  • Instead of implementing this inside python-heatclient, create a new project which depends on python-heatclient and python-openstackclient.

Implementation

Assignee(s)

There are many commands to implement and implementation tasks would be easily shared among many developers. The launchpad blueprint whiteboard will be used to coordinate the implementation status of each command and who has assigned themself to implement each one.

Primary assignee:

Steve Baker <sbaker@redhat.com>

Other asignees:

Bryan Jones <jonesbr@us.ibm.com>

Milestones

Target Milestone for completion:

mitaka-3

Work Items

Work items or tasks – break the feature up into the things that need to be done to implement it. Those parts might end up being done by different people, but we’re mostly trying to understand the timeline for implementation.

Dependencies

None, this is an independent piece of work