446 lines
14 KiB
ReStructuredText
446 lines
14 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
==================================================
|
|
Implementation of ironic commands as an OSC plugin
|
|
==================================================
|
|
|
|
https://bugs.launchpad.net/ironic/+bug/1526479
|
|
|
|
The OpenStackClient is becoming the defacto CLI client for OpenStack. This spec
|
|
will spell out what the command structure should look like, including
|
|
parameters and command names.
|
|
|
|
Problem description
|
|
===================
|
|
|
|
The OpenStackClient [#]_ has become the preferred method of creating clients
|
|
for OpenStack APIs. The initial implementation has been done. What needs to
|
|
happen is to define what the command structure should be. There has been some
|
|
confusion/discussion [#]_ about what these commands should look like, so it
|
|
seemed the proper thing to create a spec.
|
|
|
|
The goal of the OpenStackClient is to make the CLI clients more 'natural' for
|
|
the End User. This spec will specify the commands that the End User will use
|
|
when interacting with Ironic.
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
The proposed implementation will have all of the commands implemented as
|
|
specified in the `Client (CLI) impact`_ section below.
|
|
|
|
In addition (or as clarification) to the OpenStackClient command
|
|
structure [#]_ :
|
|
|
|
* the OpenStackClient command structure is described as
|
|
``<object1> <action> <object2>``. This doesn't work if there are commands
|
|
of the form ``<object1> <action>``. Instead, we will use the form
|
|
``<object1> <object2> <action>``. (Perhaps think of it as one object with
|
|
two parts). For example, instead of "openstack baremetal node
|
|
set maintenance" (because we have "openstack baremetal node set"), we will
|
|
use "openstack baremetal node maintenance set".
|
|
|
|
* don't use hyphenated nouns, because the commands should be more 'natural'
|
|
and there aren't any commands (yet) that use hyphens. For example,
|
|
instead of "openstack baremetal node boot-device set", we are going to use
|
|
"openstack baremetal node boot device set".
|
|
|
|
* only provide one OpenStackClient command to do something; avoid aliasing
|
|
|
|
* for naming, the trend is to use Americanised spelling, eg 'favor' instead of
|
|
'favour'. Having said that, it is important to take into consideration
|
|
the terminology/usage outside of OpenStack, e.g. by operators and
|
|
administrators.
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
Continue with the current client and remove the existing OSC plugin bits.
|
|
|
|
Data model impact
|
|
-----------------
|
|
|
|
None
|
|
|
|
State Machine Impact
|
|
--------------------
|
|
|
|
None
|
|
|
|
REST API impact
|
|
---------------
|
|
|
|
None
|
|
|
|
Client (CLI) impact
|
|
-------------------
|
|
|
|
openstack baremetal chassis
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* openstack baremetal chassis show <uuid>
|
|
|
|
--fields <field,[field,...]> Select fields to fetch and display
|
|
|
|
* openstack baremetal chassis list
|
|
|
|
--long Show detailed chassis info (Mutually exclusive
|
|
to --fields)
|
|
--limit <limit> Limit the number of items to return
|
|
--marker <uuid> Which chassis uuid to start after
|
|
--sort <key[:direction]> Key and direction of sort. <direction> is
|
|
optional. Defaults to ascending order.
|
|
--fields <field,[field,...]> Select fields to fetch and display. (Mutually
|
|
exclusive to --long)
|
|
|
|
* openstack baremetal chassis create
|
|
|
|
--description <description> Chassis description
|
|
--extra <key=value> Extra chassis properties. Can be specified
|
|
multiple times.
|
|
--uuid <uuid> UUID of the chassis
|
|
|
|
* openstack baremetal chassis delete <uuid> [<uuid> ...]
|
|
|
|
* openstack baremetal chassis set <uuid>
|
|
|
|
--extra <key=value> Property to set or update. Can be specified
|
|
multiple times.
|
|
--description <description> Chassis description
|
|
|
|
* openstack baremetal chassis unset <uuid>
|
|
|
|
--extra <key> Key of property to unset. Can be specified
|
|
multiple times.
|
|
--description <description> Will unset the chassis description ('')
|
|
|
|
ironic CLI users who want to see a list of nodes belonging to a given chassis
|
|
should use ``openstack baremetal node list --chassis``, since we will not
|
|
provide an ``openstack baremetal chassis xxx`` equivalent to
|
|
``ironic chassis-node-list``.
|
|
|
|
openstack baremetal driver
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* openstack baremetal driver list
|
|
|
|
* openstack baremetal driver show <driver>
|
|
|
|
* openstack baremetal driver passthru list <driver>
|
|
|
|
* openstack baremetal driver passthru call <driver> <method>
|
|
|
|
<method> Vendor passthru method to call.
|
|
|
|
--arg <key=value> key=value to add to passthru method. Can be
|
|
specified multiple times.
|
|
--http-method <http_method> one of 'POST', 'PUT', 'GET', 'DELETE', 'PATCH'
|
|
|
|
openstack baremetal node
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* openstack baremetal node show <uuid>
|
|
|
|
Obsoletes: openstack baremetal show
|
|
|
|
--instance Interpret <uuid> as an instance UUID
|
|
--fields <field,[field,...]> Select fields to fetch and display.
|
|
|
|
* openstack baremetal node list
|
|
|
|
Obsoletes: openstack baremetal list
|
|
|
|
--limit <limit> Limit the number of items to return
|
|
--marker <uuid> Which node to start after
|
|
--sort <key[:direction]> Key and direction of sort. <direction> is optional.
|
|
--maintenance List nodes in maintenance mode
|
|
--associated List nodes associated with an instance
|
|
--chassis <uuid> UUID of chassis to limit node list
|
|
--provision-state <state> Show nodes in specified <state>
|
|
--fields <field,[field,...]> Select fields to fetch and display. (Mutually
|
|
exclusive to --long)
|
|
|
|
* openstack baremetal node create
|
|
|
|
Obsoletes: openstack baremetal create
|
|
|
|
--chassis-uuid <uuid> Chassis this node belongs to
|
|
--driver <driver> Driver used to control the node
|
|
--driver-info <key=value> key=value pair used by the driver. Can be
|
|
specified multiple times.
|
|
--property <key=value> Property of the node. Can be specified multiple
|
|
times.
|
|
--extra <key=value> Arbitrary metadata. Can be specified multiple
|
|
times.
|
|
--uuid <uuid> Unique UUID of the node. Optional.
|
|
--name <name> Unique name of the node.
|
|
|
|
* openstack baremetal node delete <uuid> [<uuid> ...]
|
|
|
|
Obsoletes: openstack baremetal delete
|
|
|
|
* openstack baremetal node set <uuid>
|
|
|
|
Obsoletes: openstack baremetal set
|
|
|
|
--name <name> Name of the node
|
|
--instance-uuid <uuid> Instance UUID
|
|
--driver <driverid> Driver name or UUID
|
|
--property <key=value> Property to set/update on the node. Can be specified
|
|
multiple times.
|
|
--extra <key=value> Extra to set/update on the node. Can be
|
|
specified multiple times.
|
|
--driver-info <key=value> driver-info to set/update on the node. Can be
|
|
specified multiple times.
|
|
--instance-info <key=value> instance-info to set/update on the node. Can be
|
|
specified multiple times.
|
|
--target-raid-config <config> Set the target RAID configuration (JSON) for
|
|
the node. This can be one of: 1. a file
|
|
containing JSON data of the RAID
|
|
configuration; 2. "-" to read the contents
|
|
from standard input; or 3. a valid JSON
|
|
string.
|
|
|
|
* openstack baremetal node unset <uuid>
|
|
|
|
Obsoletes: openstack baremetal unset
|
|
|
|
--property <key> key to unset on the node. Can be specified multiple
|
|
times.
|
|
--extra <key> key from extra to unset. Can be specified multiple
|
|
times.
|
|
--driver-info <key> key to unset from driver-info. Can be specified
|
|
multiple times.
|
|
--instance-info <key> key to unset from instance-info. Can be specified
|
|
multiple times.
|
|
--instance-uuid <uuid> Instance uuid.
|
|
--name Name of the node.
|
|
--target-raid_config target RAID configuration
|
|
|
|
* openstack baremetal node passthru list <uuid>
|
|
|
|
* openstack baremetal node passthru call <uuid> <method>
|
|
|
|
<method> Vendor passthru method to be called
|
|
|
|
--arg <key=value> argument to send to passthru method. Can
|
|
be specified multiple times.
|
|
--http-method <http_method> One of 'POST', 'PUT', 'GET', 'DELETE', 'PATCH'
|
|
|
|
* openstack baremetal node console show <uuid>
|
|
|
|
* openstack baremetal node console enable <uuid>
|
|
|
|
* openstack baremetal node console disable <uuid>
|
|
|
|
* openstack baremetal node boot device show <uuid>
|
|
|
|
--supported Show the supported boot devices
|
|
|
|
* openstack baremetal node boot device set <uuid> <device>
|
|
|
|
<device> One of 'pxe', 'disk', 'cdrom', 'bios', 'safe'
|
|
|
|
--persistent Make changes persistent for all future boots.
|
|
|
|
* openstack baremetal node deploy <uuid>
|
|
|
|
--config-drive <config_drive> A gzipped, base64-encoded configuration drive
|
|
string OR the path to the configuration drive
|
|
file OR the path to a directory containing
|
|
the config drive files. In case it's a
|
|
directory, a config drive will be generated
|
|
from it.
|
|
|
|
* openstack baremetal node undeploy <uuid>
|
|
|
|
* openstack baremetal node rebuild <uuid>
|
|
|
|
* openstack baremetal node inspect <uuid>
|
|
|
|
* openstack baremetal node provide <uuid>
|
|
|
|
* openstack baremetal node manage <uuid>
|
|
|
|
* openstack baremetal node abort <uuid>
|
|
|
|
* openstack baremetal node maintenance set <uuid>
|
|
|
|
--reason <reason> Reason for setting to maintenance mode
|
|
|
|
* openstack baremetal node maintenance unset <uuid>
|
|
|
|
* openstack baremetal node power on <uuid>
|
|
|
|
* openstack baremetal node power off <uuid>
|
|
|
|
* openstack baremetal node reboot <uuid>
|
|
|
|
* openstack baremetal node validate <uuid>
|
|
|
|
ironic CLI users who want to see a list of ports belonging to a given node
|
|
should use ``openstack baremetal port list --node``, since we will not
|
|
provide an ``openstack baremetal node xxx`` equivalent to
|
|
``ironic node-port-list``.
|
|
|
|
ironic CLI users who want the equivalent to ``ironic node-show-states`` should
|
|
use the following command::
|
|
|
|
openstack baremetal node show <node> --fields console_enabled last_error
|
|
power_state provision_state provision_updated_at raid_config
|
|
target_power_state target_provision_state target_raid_config
|
|
|
|
openstack baremetal port
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* openstack baremetal port show <uuid|mac>
|
|
|
|
--address <mac> Mac address instead of uuid
|
|
--fields <field[,field,...]> Fields to display
|
|
|
|
* openstack baremetal port list
|
|
|
|
--limit <limit> Limit the number of items to return
|
|
--marker <marker> Which port to start after
|
|
--sort <key[:direction]> Key and direction of sort
|
|
--long Display detailed information about ports.
|
|
Mutually exclusive with --fields.
|
|
--fields <field[,field,...]> Fields to display. Mutually exclusive with
|
|
--long.
|
|
--node <nodeid> UUID or name of node to limit the port display
|
|
|
|
* openstack baremetal port create <address>
|
|
|
|
--node <uuid> Node uuid to add the port to
|
|
--extra <key=value> Arbitrary key=value metadata. Can be specified
|
|
multiple times.
|
|
|
|
* openstack baremetal port delete <uuid> [<uuid> ...]
|
|
|
|
* openstack baremetal port set <uuid>
|
|
|
|
--extra <key=value> property to set. Can be specified multiple times.
|
|
--address <macaddress> Set new MAC address of port
|
|
--node <nodeid> Set UUID or name of node the port is assigned to
|
|
|
|
* openstack baremetal port unset <uuid>
|
|
|
|
--extra <key> key to remove. Can be specified multiple times.
|
|
|
|
|
|
Not addressed
|
|
~~~~~~~~~~~~~
|
|
OpenStackClient commands corresponding to these ironic CLI commands are not
|
|
addressed by this proposal. They will be addressed in a future release.
|
|
|
|
* ``ironic driver-raid-logical-disk-properties``. Get RAID logical disk
|
|
properties for a driver.
|
|
|
|
* ``ironic driver-properties``. Get properties (node.driver_info keys and
|
|
descriptions) for a driver.
|
|
|
|
RPC API impact
|
|
--------------
|
|
|
|
None
|
|
|
|
Driver API impact
|
|
-----------------
|
|
|
|
None
|
|
|
|
Nova driver impact
|
|
------------------
|
|
|
|
None
|
|
|
|
Ramdisk impact
|
|
--------------
|
|
|
|
N/A
|
|
|
|
.. NOTE: This section was not present at the time this spec was approved.
|
|
|
|
Security impact
|
|
---------------
|
|
|
|
None
|
|
|
|
Other end user impact
|
|
---------------------
|
|
|
|
None
|
|
|
|
Scalability impact
|
|
------------------
|
|
|
|
None
|
|
|
|
Performance Impact
|
|
------------------
|
|
|
|
None
|
|
|
|
Other deployer impact
|
|
---------------------
|
|
|
|
None
|
|
|
|
Developer impact
|
|
----------------
|
|
|
|
None
|
|
|
|
Implementation
|
|
==============
|
|
|
|
Assignee(s)
|
|
-----------
|
|
|
|
Primary assignee:
|
|
|
|
* brad-9 <brad@redhat.com>
|
|
|
|
Other contributors:
|
|
|
|
* Romanenko_K <kromanenko@mirantis.com>
|
|
* rloo <ruby.loo@intel.com>
|
|
|
|
Work Items
|
|
----------
|
|
|
|
TBD
|
|
|
|
Dependencies
|
|
============
|
|
|
|
None
|
|
|
|
Testing
|
|
=======
|
|
|
|
Unittests will be added.
|
|
|
|
Upgrades and Backwards Compatibility
|
|
====================================
|
|
|
|
There is already an implementation of some of these commands. A few are likely
|
|
to change with this spec. These existing commands will go through a deprecation
|
|
period.
|
|
|
|
Documentation Impact
|
|
====================
|
|
|
|
The command line documentation will be updated to show these new commands.
|
|
|
|
References
|
|
==========
|
|
|
|
.. [#] http://docs.openstack.org/developer/python-openstackclient/index.html
|
|
.. [#] http://lists.openstack.org/pipermail/openstack-dev/2015-November/078998.html
|
|
.. [#] http://docs.openstack.org/developer/python-openstackclient/commands.html
|