Jump to: navigation, search

Difference between revisions of "UnifiedCLI/Mapping"

(complete server options)
(Redirected page to OpenStackClient/Commands)
 
(186 intermediate revisions by 5 users not shown)
Line 1: Line 1:
__NOTOC__
+
#REDIRECT [[OpenStackClient/Commands]]
= OSCLI =
 
  
''Part of the [[UnifiedCLI]] proposal''
+
'''''Note: this page is being deprecated in favor of a new [[OpenStackClient/Commands|OpenStackClient Commands]] page with the correct name.'''''
  
== Command Mapping Summary ==
+
__TOC__
  
This is an example mapping of the existing commands from Keystone, Nova and Glance to the <code><nowiki><verb> <object></nowiki></code> form for the new cli tool.  It reduces both the number of verbs and objects by handling some of the smaller differences with command line options.
+
= [[OpenStackClient]] Commands =
  
Further consolidation could be achieved by additional options or by introduction secondary objects to the syntax.  For example, the credentials and x509-cert (and x509-root-cert) objects could be combined:
+
''Part of the [[UnifiedCLI]] proposal''
  
 +
''[Note that the use of the word '''object''' here is its generic meaning as the target of an action.]''
  
<pre><nowiki>#!csv ,
+
= Command Structure =
,
 
nova x509-create-cert [<pk-file>] [<x509-cert>],os create credentials --x509 [<pk-file>] [<x509-cert>]
 
nova credentials,os show credentials
 
nova x509-get-root-cert,os show credentials --x509 --root
 
</nowiki></pre>
 
  
 +
The OpenStackClient has a consistent and predictable format for all of its commands.
  
=== Keystone ===
+
* The top level command name is <code>openstack</code>
 +
* Sub-commands take the form:
 +
<code>openstack [<global-options>] <object> <verb> [<second-object>] [<command-local-arguments>]</code>
 +
'''''Note: The command format change was committed on 13May2013.  This is the new format.'''''
  
* Verbs:
 
** keystone: create, delete, get, list, update
 
** os: create, delete, list, set, show
 
* Objects:
 
** keystone: catalog, ec2-credentials, endpoint, role, service, tenant, user, user-password, user-role
 
** os: catalog, ec2-credentials, endpoint, role, service, tenant, user, user-role
 
  
'''keystone'''
+
== Command Arguments ==
  
<pre><nowiki>#!csv ,
+
* All long options names shall use '-' as the interpolation character (<code>--like-this</code>)
Command-line Option,Environment Variable
+
* Authentication options conform to [[/Authentication| a revised version of]] the original [[CLIAuth]]
  --os_username <auth-user-name>,                     OS_USERNAME
+
* Global arguments generally have a corresponding environment variable that may also be used to set the value.  If both are present, the command-line option takes priority.  The environment variable names can be derived from the option by dropping the leading '--', converting all embedded dashes ('-') to underscores ('_'), and converting to upper case.
  --os_password <auth-password>,                     OS_PASSWORD
+
* Positional arguments trail command options.
  --os_tenant_name <auth-tenant-name>,               OS_TENANT_NAME
+
* Some commands require two objects be acted upon, both objects appear in the command and if both are positional arguments they appear in the same order as in the command.  In words it can be expressed as "(given) object1 add object2 (to it)"
  --os_tenant_id <tenant-id>,                         OS_TENANT_ID
+
   * <object-1> <verb> <object-2>
   --os_auth_url <auth-url>,                          OS_AUTH_URL
+
    * group add user
  --os_region_name <region-name>,                    OS_REGION_NAME
+
    * access token list   (here, 'access token' is a two-word single object)
  --os_identity_api_version <identity-api-version>,  OS_IDENTITY_API_VERSION
+
    * user list role (needs more thinking)
   --token <service-token>,                            SERVICE_TOKEN
 
  --endpoint <service-endpoint>,                      SERVICE_ENDPOINT
 
</nowiki></pre>
 
  
 +
== Other ==
  
'''catalog'''
+
* Arguments that normally require an ID in the OS-API may also use the name or other short identifier where reasonable to support
 +
* Optional machine-parsable format is available with list and show commands.  List has an option for CSV-formatted output (see --format, --quote options for a list command) while show has an option for shell-assignment formatted output (see --format option for a show command).
  
<pre><nowiki>#!bash
+
== Verbs ==
keystone catalog [--service <service-type>]
 
  
os show service [--catalog] [<service-type>
+
The verbs used by the default [[OpenStack]] clients are defined below to provide a consistent meaning to each action.  Many of them have logical opposite actions.  Those verbs with an opposite action are noted in parens if applicable.
</nowiki></pre>
 
  
 +
* <code>authorize</code> - authorize a token (used in OAuth)
 +
* <code>add</code> (<code>remove</code>) - add some object to a container object; the command is built in the order of "container add object" (<container> <object>), the positional arguments appear in the same order
 +
* <code>attach</code> (<code>detach</code>) - connect two objects (is this different from add/remove? not really, use the same argument order as <code>add</code>)
 +
* <code><nowiki>create</nowiki></code> (<code><nowiki>delete</nowiki></code>) - create a new occurrance of the specified object
 +
* <code><nowiki>delete</nowiki></code> (<code><nowiki>create</nowiki></code>) - delete a specific occurrance of the specified object
 +
* <code><nowiki>detach</nowiki></code> (<code><nowiki>attach</nowiki></code>) - disconnect two objects (is this different from add/remove?)
 +
* <code><nowiki>list</nowiki></code> - display summary information about multiple objects
 +
* lock (unlock)
 +
* <code><nowiki>migrate</nowiki></code> - move a server to a different host; <code><nowiki>--live</nowiki></code> performs a live migration if possible
 +
* <code><nowiki>pause</nowiki></code> (<code><nowiki>unpause</nowiki></code>) - stop a server and leave it in memory
 +
* <code><nowiki>reboot</nowiki></code> - forcibly reboot a server
 +
* <code><nowiki>rebuild</nowiki></code> - rebuild a server using (most of) the same arguments as in the original <code><nowiki>create</nowiki></code>
 +
* <code><nowiki>remove</nowiki></code> (<code><nowiki>add</nowiki></code>) - remove an object from a group of objects
 +
* <code><nowiki>rescue</nowiki></code> (<code><nowiki>unrescue</nowiki></code>) - reboot a server in a special rescue mode allowing access to the original disks
 +
* <code><nowiki>resize</nowiki></code> - change a server's flavor
 +
* <code><nowiki>resume</nowiki></code> (<code><nowiki>suspend</nowiki></code>) - return a suspended server to running state
 +
* <code><nowiki>save</nowiki></code> - download an object locally
 +
* <code><nowiki>set</nowiki></code> (<code><nowiki>unset</nowiki></code>) - set an attribute of the object, often called <code><nowiki>metadata</nowiki></code>
 +
* <code><nowiki>show</nowiki></code> - display detailed information about the specifiec object
 +
* <code><nowiki>ssh</nowiki></code>
 +
* <code><nowiki>suspend</nowiki></code> (<code><nowiki>resume</nowiki></code>) - stop a server and save to disk freeing memory
 +
* unlock (lock)
 +
* <code><nowiki>unpause</nowiki></code> (<code><nowiki>pause</nowiki></code>) - return a paused server to running state
 +
* <code><nowiki>unrescue</nowiki></code> (<code><nowiki>rescue</nowiki></code>) - return a server to normal boot mode
 +
* <code><nowiki>unset</nowiki></code> (<code><nowiki>set</nowiki></code>) - remove an attribute of the object
  
'''ec2-credentials'''
 
  
<pre><nowiki>#!bash
+
== Objects ==
keystone ec2-credentials-create [--user <user-id>]
 
                      [--tenant_id <tenant-id>]
 
  
os create ec2-credentials --tenant_id <tenant-id> --user <user-id>
+
'''''Note: these need a review to sync up with the revised object names without dashes ('-') in them.'''''
  
## are both args really optional?
+
* <code>access-token</code> - [[#Identity|Identity]] - OAuth [[#access-token|access-token]]
</nowiki></pre>
+
* <code>agent</code> - [[#Compute|Compute]] - [[#agent|agent]]
 +
* <code>aggregate</code> - [[#Compute|Compute]] - [[#aggregate|aggregate]]
 +
* <code>bash-completion</code> - [[#Compute|Compute]] - [[#bash-completion|bash-completion]]
 +
* <code>catalog</code> - [[#Identity|Identity]] - [[#catalog|catalog]]
 +
* <code>cloudpipe</code> - [[#Compute|Compute]] - [[#cloudpipe|cloudpipe]]
 +
* <code>console</code> - [[#Compute|Compute]] - [[#console|console]]
 +
* <code>consumer</code> - [[#Identity|Identity]] - an OAuth [[#consumer|consumer]]
 +
* <code>credential</code> - [[#API_v3|Identity v3]] - [[#credential|credential]]
 +
* <code>credentials</code> - [[#Compute|Compute]] - [[#credentials|credentials]]
 +
* <code>diagnostics</code> - [[#Compute|Compute]] - [[#diagnostics|diagnostics]]
 +
* <code>dns</code> - [[#Compute|Compute]] - [[#dns|dns]]
 +
* <code>domain</code> - [[#API_v3|Identity v3]] - [[#domain|domain]]
 +
* <code>ec2-credentials</code> - [[#Identity|Identity]] - [[#ec2-credentials|ec2-credentials]]
 +
* <code>endpoint</code> - [[#Identity|Identity]] - [[#endpoint|endpoint]]
 +
* <code>endpoints</code> - [[#Compute|Compute]] - [[#endpoints|endpoints]]
 +
* <code>fixed-ip</code> - [[#Compute|Compute]] - [[#fixed-ip|fixed-ip]]
 +
* <code>flavor</code> - [[#Compute|Compute]] - [[#flavor|flavor]]
 +
* <code>floating-ip</code> - [[#Compute|Compute]] - [[#floating-ip|floating-ip]]
 +
* <code>floating-ip-pool</code> - [[#Compute|Compute]] - [[#floating-ip-pool|floating-ip-pool]]
 +
* <code>group</code> - [[#API_v3|Identity v3]] - [[#group|group]]
 +
* <code>host</code> - [[#Compute|Compute]] - [[#host|host]]
 +
* <code>hypervisor</code> - [[#Compute|Compute]] - [[#hypervisor|hypervisor]]
 +
* <code>keypair</code> - [[#Compute|Compute]] - [[#keypair|keypair]]
 +
* <code>limits</code> - [[#Compute|Compute]] - [[#limits|limits]]
 +
* <code>policy</code> - [[#API_v3|Identity v3]] - [[#policy|policy]]
 +
* <code>project</code> - [[#API_v3|Identity v3]] - [[#project|project]]
 +
* <code>quota</code> - [[#Compute|Compute]] - [[#quota|quota]]
 +
* <code>quota</code> - [[#Volume|Volume]] - [[#quota|quota]]
 +
* <code>request-token</code> - [[#Identity|Identity]] - OAuth [[#request-token|request-token]]
 +
* <code>role</code> - [[#Identity|Identity]] - [[#role|role]]
 +
* <code>secgroup</code> - [[#Compute|Compute]] - [[#secgroup|secgroup]]
 +
* <code>secgroup-group-rule</code> - [[#Compute|Compute]] - [[#secgroup-group-rule|secgroup-group-rule]]
 +
* <code>secgroup-rule</code> - [[#Compute|Compute]] - [[#secgroup-rule|secgroup-rule]]
 +
* <code>server</code> - [[#Compute|Compute]] - [[#server|server]]
 +
* <code>service</code> - [[#Identity|Identity]] - [[#service|service]]
 +
* <code>snapshot</code> - [[#Volume|Volume]] - [[#snapshot|snapshot]]
 +
* <code>tenant</code> - [[#API_v2.0|Identity v2.0]] - [[#tenant|tenant]]
 +
* <code>token</code> - [[#Identity|Identity]] - [[#token|token]]
 +
* <code>user</code> - [[#Identity|Identity]] - [[#user|user]]
 +
* <code>user role</code> - [[#Identity|Identity]] - [[#user-role|user-role]]
 +
* <code>volume</code> - [[#Volume|Volume]] - [[#volume|volume]]
 +
* <code>volume-type</code> - [[#Volume|Volume]] - [[#volume-type|volume-type]]
  
  
<pre><nowiki>#!bash
+
== Global Options ==
keystone ec2-credentials-delete [--user <user-id>]
 
                      --access <access-key>
 
  
os delete ec2-credentials --access <access-key>
+
The common global options from the default [[OpenStack]] clients have been mapped to the set of global options below.
  
## what changes if --user is not provided?
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Option !! Environment Variable !!  !! Option !! Environment Variable
 +
|-
 +
| --version ||  || || --version ||
 +
|-
 +
| --help ||  || || --help ||
 +
|-
 +
| --debug ||  || || --debug ||
 +
|-
 +
| --quiet ||  || ||  ||
 +
|-
 +
| --verbose ||  || ||  ||
 +
|-
 +
| --log-file <filename> ||  || ||  ||
 +
|-
 +
| --os-auth-url <url> || OS_AUTH_URL ||  || --os-auth-url <url> || OS_AUTH_URL
 +
|-
 +
| --os-tenant-name <name> || OS_TENANT_NAME ||  || --os-tenant-name <name> || OS_TENANT_NAME
 +
|-
 +
| --os-tenant-id <id> || OS_TENANT_ID ||  || --os-tenant-id <id> || OS_TENANT_ID
 +
|-
 +
| --os-username <name> || OS_USERNAME ||  || --os-username <name> || OS_USERNAME
 +
|-
 +
| --os-password <pw> || OS_PASSWORD ||  || --os-password <pw> || OS_PASSWORD
 +
|-
 +
| --os-region-name <region> || OS_REGION_NAME ||  || --os-region-name <region> || OS_REGION_NAME
 +
|-
 +
| --os-cacert <file> || OS_CACERT ||  || --os-cacert <file> || OS_CACERT
 +
|-
 +
|  ||  || || --insecure ||
 +
|-
 +
| --os-use-keyring ||  || ||  ||
 +
|}
  
  
<pre><nowiki>#!bash
+
== Common Options ==
keystone ec2-credentials-get [--user <user-id>]
 
                            --access <access-key>
 
  
os show ec2-credentials --access <access-key>
+
A number of options will appear in many commands and should have the same form in all commands to the extent possible.
  
## what changes if --user is not provided?
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! Option !! Description !! Usual Default
 +
|-
 +
| --description || describes an object || none
 +
|-
 +
| --enable || Used for setting the enabled state for an object || n/a
 +
|-
 +
| --disable || Used for setting the enabled state for an object || n/a
 +
|}
  
  
<pre><nowiki>#!bash
+
= Command Mapping Summary =
keystone ec2-credentials-list [--user <user-id>]
 
  
os list ec2-credentials [--user <user-id>]
+
This is an example mapping of the existing commands from Keystone (Identity), Nova (Compute), Glance (Image) and Cinder (Volume) to the <code><nowiki><verb> <object></nowiki></code> form for the [[OpenStackClient]] cli tool.  It reduces both the number of verbs and objects by handling some of the smaller differences with command line options.
</nowiki></pre>
+
 
 +
Further consolidation could be achieved by additional options or by introduction secondary objects to the syntax.  For example, the credentials and x509-cert (and x509-root-cert) objects could be combined:
  
  
'''endpoint'''
+
{| class="wikitable"
 +
|-
 +
| nova x509-create-cert [<pk-file>] [<x509-cert>] || os create credentials --x509 [<pk-file>] [<x509-cert>]
 +
|-
 +
| nova credentials || os show credentials
 +
|-
 +
| nova x509-get-root-cert || os show credentials --x509 --root
 +
|}
  
<pre><nowiki>#!bash
 
keystone endpoint-create [--region <endpoint-region>]
 
                        [--service_id <service-id>]
 
                        [--publicurl <public-url>]
 
                        [--adminurl <admin-url>]
 
                        [--internalurl <internal-url>]
 
  
os create endpoint
+
== Cross API ==
        [--region <endpoint-region>]
 
        [--publicurl <public-url>]
 
        [--adminurl <admin-url>]
 
        [--internalurl <internal-url>]
 
        <service>
 
</nowiki></pre>
 
  
 +
Object names that appear in multiple APIs, like quota, are handled by putting their command handler classes in openstackclient.common.  If the number of these becomes large they should be moved into a subdirectory.
  
<pre><nowiki>#!bash
+
==== credentials ====
keystone endpoint-delete <endpoint-id>
 
  
os delete endpoint <endpoint-id>
+
''[consider rolling the ec2 creds into this too]''
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os credentials create
 +
    --x509
 +
    [<private-key-file>]
 +
    [<certificate-file>]
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova x509-create-cert
 +
    [<pk-file>]
 +
    [<x509-cert>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os credentials show
 +
    [--token]
 +
    [--user]
 +
    [--x509 [--root]]
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova credentials
 +
    [--wrap <integer>]
  
<pre><nowiki>#!bash
+
nova x509-get-root-cert
keystone endpoint-get --service <service-type>
+
    [<filename>]
                      [--endpoint_type <endpoint-type>]
+
</source>
                      [--attr <service-attribute>]
+
|}
                      [--value <value>]
 
  
os show endpoint
+
==== limits ====
        [--type <endpoint-type>]
 
        [--attr <endpoint-attribute>]
 
        [--value <endpoint-value>]
 
        <service>
 
  
os show endpoint
+
{| class="wikitable"
        [--all]
+
|-
        <service>
+
! OSC Command !! Implemented !! !! Keystone command
</nowiki></pre>
+
|-
 +
|
 +
<source lang="bash">
 +
os limits show
 +
    --absolute [--reserved] | --rate
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova absolute-limits
 +
    [--reserved]
  
 +
nova rate-limits
  
<pre><nowiki>#!bash
+
cinder absolute-limits
keystone endpoint-list
 
  
os list endpoint [--long]
+
cinder rate-limits
</nowiki></pre>
+
</source>
 +
|}
  
 +
==== quota ====
  
'''role'''
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os quota set
 +
    # Compute settings
 +
    [--cores <num-cores>]
 +
    [--fixed-ips <num-fixed-ips>]
 +
    [--floating-ips <num-floating-ips>]
 +
    [--injected-file-size <injected-file-bytes>]
 +
    [--injected-files <num-injected-files>]
 +
    [--instances <num-instances>]
 +
    [--key-pairs <num-key-pairs>]
 +
    [--properties <num-properties>]
 +
    [--ram <ram-mb>]
  
<pre><nowiki>#!bash
+
    # Volume settings
keystone role-create --name <role-name>
+
    [--gigabytes <new-gigabytes>]
 +
    [--snapshots <new-snapshots>]
 +
    [--volumes <new-volumes>]
  
os create role <role-name>
+
    <project>
</nowiki></pre>
+
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova quota-update
 +
    [--instances <instances>]
 +
    [--cores <cores>]
 +
    [--ram <ram>]
 +
    [--volumes <volumes>]
 +
    [--gigabytes <gigabytes>]
 +
    [--floating-ips <floating_ips>]
 +
    [--metadata-items <metadata_items>]
 +
    [--injected-files <injected_files>]
 +
    [--injected-file-content-bytes <injected_file_content_bytes>]
 +
    <tenant_id>
  
 +
cinder quota-update
 +
    [--volumes <volumes>]
 +
    [--snapshots <snapshots>]
 +
    [--gigabytes <gigabytes>]
 +
    <tenant_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os quota set
 +
    --class
 +
    # Compute settings
 +
    [--cores <num-cores>]
 +
    [--fixed-ips <num-fixed-ips>]
 +
    [--floating-ips <num-floating-ips>]
 +
    [--injected-file-size <injected-file-bytes>]
 +
    [--injected-files <num-injected-files>]
 +
    [--instances <num-instances>]
 +
    [--key-pairs <num-key-pairs>]
 +
    [--properties <num-properties>]
 +
    [--ram <ram-mb>]
  
<pre><nowiki>#!bash
+
    # Volume settings
keystone role-delete <role-id>
+
    [--gigabytes <new-gigabytes>]
 +
    [--snapshots <new-snapshots>]
 +
    [--volumes <new-volumes>]
  
os delete role <role>
+
    <class>
</nowiki></pre>
+
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova quota-class-update
 +
    [--instances <instances>]
 +
    [--cores <cores>]
 +
    [--ram <ram>]
 +
    [--volumes <volumes>]
 +
    [--gigabytes <gigabytes>]
 +
    [--floating-ips <floating_ips>]
 +
    [--metadata-items <metadata_items>]
 +
    [--injected-files <injected_files>]
 +
    [--injected-file-content-bytes <injected_file_content_bytes>]
 +
    <class>
  
 +
cinder quota-class-update
 +
    [--volumes <volumes>]
 +
    [--snapshots <snapshots>]
 +
    [--gigabytes <gigabytes>]
 +
    <tenant_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os quota show
 +
    [--default]
 +
    <project>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova quota-show
 +
    [--tenant <tenant-id>]
  
<pre><nowiki>#!bash
+
cinder quota-show
keystone role-get <role-id>
+
    <tenant_id>
  
os show role <role>
+
nova quota-defaults
</nowiki></pre>
+
    <tenant_id>
  
 +
cinder quota-defaults
 +
    <tenant_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os quota show
 +
    --class
 +
    <class>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova quota-class-show
 +
    <class>
  
<pre><nowiki>#!bash
+
cinder quota-class-show
keystone role-list
+
    <class>
 +
</source>
 +
|}
  
os list role
+
== Identity ==
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Option !!  Environment Variable !!  !!  Keystone Option !!  Environment Variable
 +
|-
 +
| --os-identity-api-version <ver> || OS_IDENTITY_API_VERSION ||  || --os-identity-api-version <ver> || OS_IDENTITY_API_VERSION
 +
|-
 +
| --os-token <token> || OS_TOKEN || || --os-token <token> || OS_SERVICE_TOKEN
 +
|-
 +
| --os-url <url> || OS_URL || || --os-endpoint <url> || OS_SERVICE_ENDPOINT
 +
|-
 +
|  ||  || || --os-cert <file> || OS_CERT
 +
|-
 +
|  ||  || || --os-key <key-file> || OS_KEY
 +
|-
 +
|  ||  || || --os-cache || OS_CACHE
 +
|-
 +
|  ||  || || --force-new-token ||
 +
|-
 +
|  ||  || || --stale-duration <seconds> ||
 +
|-
 +
|}
  
'''service'''
+
=== API v2.0 ===
  
<pre><nowiki>#!bash
+
==== catalog ====
keystone service-create --name <name>
 
                        --type <type>
 
                        [--description <service-description>]
 
  
os create service
+
{| class="wikitable"
        [--type <service-type>]
+
|-
        [--description <service-description>]
+
! OSC Command !! Implemented !! !! Keystone command
        <service-name>
+
|-
</nowiki></pre>
+
|
 +
<source lang="bash">
 +
os catalog show
 +
    [--service <service>]
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
keystone catalog
 +
    [--service <service-type>]
 +
</source>
 +
|}
  
 +
==== ec2 credentials ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
keystone service-delete <service-id>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os ec2 credentials create
 +
    [--project <project>]
 +
    [--user <user>]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone ec2-credentials-create
 +
    [--user <user-id>]
 +
    [--tenant_id <tenant-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ec2 credentials delete
 +
    [--user <user>]
 +
    <access-key>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone ec2-credentials-delete
 +
    [--user <user-id>]
 +
    --access <access-key>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ec2 credentials list
 +
    [--user <user>]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone ec2-credentials-list
 +
    [--user <user-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ec2 credentials show
 +
    [--user <user>]
 +
    <access-key>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone ec2-credentials-get
 +
    [--user <user-id>]
 +
    --access <access-key>
 +
</source>
 +
|}
  
os delete service <service>
+
==== endpoint ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint create
 +
    --publicurl <public-url>
 +
    [--adminurl <admin-url>]
 +
    [--internalurl <internal-url>]
 +
    [--region <endpoint-region>]
 +
    <service>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-create
 +
    [--region <endpoint-region>]
 +
    [--service_id <service-id>]
 +
    [--publicurl <public-url>]
 +
    [--adminurl <admin-url>]
 +
    [--internalurl <internal-url>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint delete
 +
    <endpoint-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-delete
 +
    <endpoint-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint show
 +
    [--type <endpoint-type>]
 +
    [--attr <endpoint-attribute>]
 +
    [--value <endpoint-value>]
 +
    [--all]
 +
    <service-type>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-get
 +
    --service <service-type>
 +
    [--endpoint_type <endpoint-type>]
 +
    [--attr <service-attribute>]
 +
    [--value <value>]
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== role ====
keystone service-get <service-id>
 
  
os show service <service>
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os role create
 +
    <role-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone role-create --name
 +
    <role-name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role delete
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone role-delete
 +
    <role-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone role-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role show
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone role-get
 +
    <role-id>
 +
</source>
 +
|}
  
 +
==== service ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os service create
 +
    [--type <service-type>]
 +
    [--description <service-description>]
 +
    <service-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-create
 +
    --name <name>
 +
    --type <type>
 +
    [--description <service-description>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os service delete
 +
    <service>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-delete
 +
    <service-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os service list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 
keystone service-list
 
keystone service-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os service show
 +
    [--catalog]
 +
    <service>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-get
 +
    <service-id>
 +
</source>
 +
|}
  
os list service [--long]
+
==== tenant ====
</nowiki></pre>
 
 
 
 
 
'''tenant'''
 
 
 
<pre><nowiki>#!bash
 
keystone tenant-create --name <tenant-name>
 
                      [--description <tenant-description>]
 
                      [--enabled <true|false>]
 
 
 
os create tenant
 
        [--description <tenant-description>]
 
        [--enable|--disable]
 
        <tenant-name>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
keystone tenant-delete <tenant-id>
 
 
 
os delete tenant <tenant>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
keystone tenant-get <tenant-id>
 
 
 
os show tenant <tenant>
 
</nowiki></pre>
 
 
 
  
<pre><nowiki>#!bash
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os tenant create
 +
    [--description <description>]
 +
    [--enable | --disable]
 +
    <tenant-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone tenant-create
 +
    --name <tenant-name>
 +
    [--description <tenant-description>]
 +
    [--enabled <true|false>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os tenant delete
 +
    <tenant>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone tenant-delete
 +
    <tenant>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os tenant list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 
keystone tenant-list
 
keystone tenant-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os tenant set
 +
    [--name <new-tenant-name>]
 +
    [--description <new-tenant-description>]
 +
    [--enable | --disable]
 +
    <tenant>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone tenant-update
 +
    [--name <tenant_name>]
 +
    [--description <tenant-description>]
 +
    [--enabled <true|false>]
 +
    <tenant-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os tenant show
 +
    <tenant>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone tenant-get
 +
    <tenant-id>
 +
</source>
 +
|}
  
os list tenant [--long]
+
==== token ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os token show
 +
    [--width <token-display-width>]
 +
</source>
 +
|| ??
 +
|| ||
 +
<source lang="bash">
 +
keystone token-get [--wrap <integer>]
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== user ====
keystone tenant-update [--name <tenant_name>]
 
                      [--description <tenant-description>]
 
                      [--enabled <true|false>]
 
                      <tenant-id>
 
  
os set tenant
+
{| class="wikitable"
        [--name <new-tenant-name>]
+
|-
        [--description <tenant-description>]
+
! OSC Command !! Implemented !! !! Keystone command
        [--enable|--disable]
+
|-
        <tenant>
+
|
</nowiki></pre>
+
<source lang="bash">
 +
os user create
 +
    [--password <user-password>]
 +
    [--email <user-email>]
 +
    [--tenant <tenant>]
 +
    [--enable | --disable]
 +
    <user-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-create
 +
    --name <user-name>
 +
    [--tenant_id <tenant-id>]
 +
    [--pass <pass>]
 +
    [--email <email>]
 +
    [--enabled <true|false>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user delete
 +
    <user>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-delete
 +
    <user-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user list
 +
    [--tenant <tenant>]
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-list
 +
    [<tenant-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user set
 +
    [--name <new-user-name>]
 +
    [--password <user-password>]
 +
    [--email <user-email>]
 +
    [--tenant <tenant>]
 +
    [--enable|--disable]
 +
    <user>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-password-update
 +
    --pass <password>
 +
    <user-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user show
 +
    <user>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-get
 +
    <user-id>
 +
</source>
 +
|}
  
 +
==== user role ====
  
'''user'''
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os user role add
 +
    [--tenant <tenant>]
 +
    <user>
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-role-add
 +
    --user <user-id>
 +
    --role <role-id>
 +
    [--tenant_id <tenant-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user role list
 +
    [--tenant <tenant>]
 +
    [<user>]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-role-list
 +
    [--user <user-id>]
 +
    [--tenant_id <tenant-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user role remove
 +
    [--tenant <tenant>]
 +
    <user>
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-role-remove
 +
    --user <user-id>
 +
    --role <role-id>
 +
    [--tenant_id <tenant-id>]
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== <other> ====
keystone user-create --name <user-name>
 
                    [--tenant_id <tenant-id>]
 
                    [--pass <pass>]
 
                    [--email <email>]
 
                    [--enabled <true|false>]
 
  
os create user
+
These keystone commands are not planned for re-implementation in OpenStackClient
        [--password <user-password>]
 
        [--email <user-email>]
 
        [--tenant <tenant>]
 
        [--enable | --disable]
 
        <user-name>
 
</nowiki></pre>
 
  
 +
<source lang="bash">
 +
keystone bootstrap
 +
        --pass <password>
 +
        [--user-name <user-name>]
 +
        [--role-name <role-name>]
 +
        [--tenant-name <tenant-name>]
 +
</source>
  
<pre><nowiki>#!bash
+
<source lang="bash">
keystone user-delete <user-id>
+
keystone discover
 +
</source>
  
os delete user <user>
+
=== API v3 ===
</nowiki></pre>
 
  
 +
==== credential ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
keystone user-get <user-id>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os credential create
 +
    [--project <project>]
 +
    [--type ec2|cert]
 +
    <user>
 +
    <data>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone credential-create
 +
    --user_id <user-id>
 +
    --type <credential-type>
 +
    --data <credential-data>
 +
    [--project_id <project-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os credential delete
 +
    <credential-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone credential-delete
 +
    <credential-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os credential list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone credential-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os credential set
 +
    [--user <user>]
 +
    [--type ec2|cert]
 +
    [--data <data>]
 +
    [--project <project>]
 +
    <credential-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone credential-update
 +
    [--user <user>]
 +
    [--type <type>]
 +
    [--data <data>]
 +
    [--project <project>]
 +
    <credential-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os credential show
 +
    <credential-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone credential-get
 +
    <credential-id>
 +
</source>
 +
|}
  
os show user <user>
+
==== domain ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os domain create
 +
    [--description <domain-description>]
 +
    [--enable | --disable]
 +
    <domain-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone domain-create
 +
    --name <domain-name>
 +
    [--description <domain-description>]
 +
    [--enabled <true|false>]
 +
    [--private_project_names <true|false>]
 +
    [--private_user_names <true|false>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os domain delete
 +
    <domain>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone domain-delete
 +
    <domain-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os domain list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone domain-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os domain set
 +
    [--name <new-domain-name>]
 +
    [--description <new-domain-description>]
 +
    [--enable | --disable]
 +
    <domain>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone domain-update
 +
    [--name <domain_name>]
 +
    [--description <domain-description>]
 +
    [--enabled <true|false>]
 +
    [--private_project_names <true|false>]
 +
    [--private_user_names <true|false>]
 +
    <domain-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os domain show
 +
    <domain>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone domain-get
 +
    <domain-id>
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== endpoint ====
keystone user-list [<tenant-id>]
 
  
os list user [--tenant <tenant>] [--long]
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint create
 +
    [--region <endpoint-region>
 +
    [--enable | --disable]
 +
    <service>
 +
    <interface admin|public|internal>
 +
    <url>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-create
 +
    [--region <endpoint-region>
 +
    [--enable | --disable]
 +
    <service_id>
 +
    <interface admin|public|internal>
 +
    <url>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint delete
 +
    <endpoint-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint set
 +
    [--interface <endpoint-interface>]
 +
    [--url <endpoint-url>]
 +
    [--service <service-id>]
 +
    [--region <endpoint-region>]
 +
    [--enable | --disable]
 +
    <endpoint>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-set
 +
    [--interface <endpoint-interface>]
 +
    [--url <endpoint-url>]
 +
    [--service <service-id>]
 +
    [--region <endpoint-region>]
 +
    [--enable | --disable]
 +
    <endpoint>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint show
 +
    <endpoint>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone endpoint-get
 +
    <endpoint>
 +
</source>
 +
|}
  
 +
==== group ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
keystone user-password-update --pass <password> <user-id>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os group create
 +
    [--domain <domain>]
 +
    [--description <group-description>]
 +
    <group-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone group-create
 +
    --name <group-name>
 +
    [--domain_id <domain-id>]
 +
    [--description <group-description>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os group delete
 +
    <group>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone group-delete
 +
    <group-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os group list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone group-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os group set
 +
    [--name <new-group-name>]
 +
    [--domain <domain>]
 +
    [--description <new-group-description>]
 +
    <group>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone group-update
 +
    [--name <group_name>]
 +
    [--domain_id <domain-id>]
 +
    [--description <group-description>]
 +
    <group-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os group show
 +
    <group>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone group-get
 +
    <group-id>
 +
</source>
 +
|}
  
os set user
+
==== oauth ====
        [--name <new-user-name>]
 
        [--password <user-password>]
 
        [--email <user-email>]
 
        [--tenant <tenant>]
 
        [--enable|--disable]
 
        <user>
 
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os access token create
 +
    --consumer-key <consumer-key>
 +
    --consumer-secret <consumer-secret>
 +
    --request-key <request-key>
 +
    --request-secret <request-secret>
 +
    --verifier <pin>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
n/a
 +
</source>
 +
|-
 +
| look at some alternatives: || || ||
 +
|-
 +
|
 +
<source lang="bash">
 +
os oauth token create
 +
    --consumer-key <consumer-key>
 +
    --consumer-secret <consumer-secret>
 +
    --request-key <request-key>
 +
    --request-secret <request-secret>
 +
    --verifier <pin>
 +
</source>
 +
|| nyet
 +
|| ||
 +
<source lang="bash">
 +
* makes the token specific to oauth
 +
* add [--oauth-ver X] if versioning for oauth2 is an issue?
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os oauth token create
 +
    --access
 +
    --consumer-key <consumer-key>
 +
    --consumer-secret <consumer-secret>
 +
    --request-key <request-key>
 +
    --request-secret <request-secret>
 +
    --verifier <pin>
  
'''user-role'''
+
os oauth token create
 +
    --request
 +
    --consumer-key <consumer-key>
 +
    --roles <roles>
 +
</source>
 +
|| nyet
 +
|| ||
 +
<source lang="bash">
 +
* collapse 'access token' and 'request token' into 'oauth token'?
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== policy ====
keystone user-role-add --user <user-id>
 
                      --role <role-id>
 
                      [--tenant_id <tenant-id>]
 
  
os add role
+
{| class="wikitable"
        [--tenant <tenant>]
+
|-
        [--user <user>]
+
! OSC Command !! Implemented !! !! Keystone command
        <role>
+
|-
</nowiki></pre>
+
|
 +
<source lang="bash">
 +
os policy create
 +
    [--type <policy-type>]
 +
    --blob-file <blob-file>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone policy-create
 +
    --type <policy-type>
 +
    --blob <policy-blob>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os policy delete
 +
    <policy-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone policy-delete
 +
    <policy-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os policy list
 +
    [--include-blob]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone policy-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os policy set
 +
    [--type <policy-type>]
 +
    [--blob-file<blob-file>]
 +
    <policy-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone policy-update
 +
    [--type <policy-type>]
 +
    [--blob <policy-blob>]
 +
    <policy-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os policy show
 +
    <policy-id>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone policy-get
 +
    <policy-id>
 +
</source>
 +
|}
  
 +
==== project ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
keystone user-role-list [--user <user-id>]  
+
|-
                  [--tenant_id <tenant-id>]
+
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os project create
 +
    [--domain <project-domain>]
 +
    [--description <project-description>]
 +
    [--enable | --disable]
 +
    <project-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone project-create
 +
    [--domain_id <domain_id>]
 +
    [--description <description>]
 +
    [--enable | --disable]
 +
    <name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os project delete
 +
    <project>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
os project-delete
 +
    <project_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os project list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone project-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os project set
 +
    [--name <new-project-name>]
 +
    [--domain <project-domain>]
 +
    [--description <new-project-description>]
 +
    [--enable | --disable]
 +
    <project>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone project-set
 +
    [--name <new-project-name>]
 +
    [--domain <project-domain>]
 +
    [--description <new-project-description>]
 +
    [--enable | --disable]
 +
    <project_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os project show
 +
    <project>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone project-get
 +
    <project_id>
 +
</source>
 +
|}
  
os list user-role
+
==== role ====
        [--tenant <tenant>]
 
        [<user>]
 
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os role add
 +
    [--user <user> | --group <group>]
 +
    [--domain <domain> | --project <project>]
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role create
 +
    <role-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role delete
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role remove
 +
    [--user <user> | --group <group>]
 +
    [--domain <domain> | --project <project>]
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role set
 +
    [--name <new-role-name>]
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os role show
 +
    <role>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== service ====
keystone user-role-remove --user <user-id>
 
                          --role <role-id>
 
                          [--tenant_id <tenant-id>]
 
  
os remove role
+
{| class="wikitable"
         [--tenant <tenant>]
+
|-
         [--user <user>]
+
! OSC Command !! Implemented !! !! Keystone command
         <role>
+
|-
</nowiki></pre>
+
|
 
+
<source lang="bash">
 
+
os service create
'''<other>'''
+
[--name <name>]
 
+
         [--enabled <true|false>]
<pre><nowiki>#!bash
+
        <type>
keystone discover
+
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-create
 +
[--name <name>]
 +
         [--enabled <true|false>]
 +
         <type>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os service delete
 +
    <service>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-delete
 +
    <service_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os list service
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os service set
 +
    [--type <service-type>]
 +
    [--name <new-name>]
 +
    [--enable | --disable]
 +
    <service>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-set
 +
    [--type <service-type>]
 +
    [--name <new-name>]
 +
    [--enable | --disable]
 +
    <service>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os service show
 +
    <service>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone service-get
 +
    <service_id>
 +
</source>
 +
|}
  
##TBD
+
==== user ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os user create
 +
    [--password <password>]
 +
    [--project <project>]
 +
    [--email <user-email>]
 +
    [--enable | --disable]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-create
 +
    --name <user-name>
 +
    [--domain_id <domain-id>]
 +
    [--default_project_id <project-id>]
 +
    [--description <description>]
 +
    [--enabled <true|false>]
 +
    [--password <password>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user delete
 +
    <user>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-delete
 +
    <user-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user list
 +
    [--project <project>]
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user set
 +
    [--name <new-name>]
 +
    [--password <password>]
 +
    [--project <project>]
 +
    [--email <user-email>]
 +
    [--enable | --disable]
 +
    <user>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-update
 +
    --user_id <user-id>
 +
    [--name <user-name>]
 +
    [--domain_id <domain-id>]
 +
    [--default_project_id <project-id>]
 +
    [--description <description>]
 +
    [--enabled <true|false>]
 +
    [--password <password>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user show
 +
    <user>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
keystone user-get
 +
    <user-id>
 +
</source>
 +
|}
  
=== Nova ===
+
== Compute ==
  
* Verbs:
 
** nova: add, attach, boot, create, delete, describe, detach, get, list, lock, migrate, pause, reboot, rebuild, remove, rename, rescue, resize, resume, set, show, ssh, suspend, unlock, unpause, unrescue, update
 
** os: add, attach, create, delete, detach, list, lock, pause, reboot, rebuild, remove, rename, rescue, resume, set, show, suspend, unlock, unpause, unrescue
 
* Objects:
 
** nova: absolute-limits, actions, aggregate, bash-completion, cloudpipe, console-log, credentials, diagnostics, dns, dns-domain, endpoints, fixed-ip, flavor, floating-ip,  floating-ip-pool, host, image, keypair, meta(data), quota, quota-class, rate-limits, resource, root-password, secgroup, secgroup-group, secgroup-rule, usage, vnc-console, volume, volume-snapshot, volume-type, x509-cert, x509-root-cert
 
** os: aggregate, aggregate-host, bash-completion, cloudpipe, console, credentials, diagnostics, dns, dns-domain, endpoints, fixed-ip, flavor, floating-ip, floating-ip-pool, host, image, keypair, limits, quota, quota-class, rate-limits, resource, secgroup, secgroup-group, secgroup-rule, server, usage, volume, volume-snapshot, volume-type, x509-cert, x509-root-cert
 
* Implied objects: instance/server
 
  
'''nova'''
+
{| class="wikitable"
 +
|-
 +
! OSC Option !! Environment Variable !! !! Nova Option !! Environment Variable
 +
|-
 +
| || || || --os-auth-system <auth-system> || OS_AUTH_SYSTEM
 +
|-
 +
| || || || --service-type <type> ||
 +
|-
 +
| || || || --service-name <name> || NOVA_SERVICE_NAME
 +
|-
 +
| || || || --volume-service-name <name> || NOVA_VOLUME_SERVICE_NAME
 +
|-
 +
| || || || --endpoint-type <type> || NOVA_ENDPOINT_TYPE
 +
|-
 +
| --os-compute-api-version <ver> || OS_COMPUTE_API_VERSION || || --os-compute-api-version <ver> || OS_COMPUTE_API_VERSION
 +
|-
 +
| || || || --bypass-url <bypass-url> ||
 +
|}
  
<pre><nowiki>#!csv ,
 
Command-line Option,Environment Variable
 
  --os_username <auth-user-name>,                    OS_USERNAME
 
  --os_password <auth-password>,                      OS_PASSWORD
 
  --os_tenant_name <auth-tenant-name>,                OS_TENANT_NAME
 
  --os_auth_url <auth-url>,                          OS_AUTH_URL
 
  --os_region_name <region-name>,                    OS_REGION_NAME
 
  --service_type SERVICE_TYPE,
 
  --service_name SERVICE_NAME,                        NOVA_SERVICE_NAME
 
  --endpoint_type ENDPOINT_TYPE,
 
  --version VERSION,                                  NOVA_VERSION
 
</nowiki></pre>
 
  
 +
=== API v2 (1.1) ===
  
 +
==== agent ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
nova actions <server>
+
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os agent create
 +
    <os>
 +
    <architecture>
 +
    <version>
 +
    <url>
 +
    <md5hash>
 +
    <hypervisor>
 +
</source>
 +
|| yes
 +
|| ||
 +
|-
 +
|
 +
<source lang="bash">
 +
os agent delete
 +
    <id>
 +
</source>
 +
|| yes
 +
|| ||
 +
|-
 +
|
 +
<source lang="bash">
 +
os agent list
 +
    [--hypervisor <hypervisor>]
 +
</source>
 +
|| yes
 +
|| ||
 +
|-
 +
|
 +
<source lang="bash">
 +
os agent set
 +
    <id>
 +
    <version>
 +
    <url>
 +
    <md5hash>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
  
##TBD
 
</nowiki></pre>
 
  
 +
==== aggregate ====
  
'''aggregate'''
+
{| class="wikitable"
 
+
|-
<pre><nowiki>#!bash
+
! OSC Command !! Implemented !! !! Nova command
nova aggregate-create <name> <availability_zone>
+
|-
 
+
|
os create aggregate ...
+
<source lang="bash">
</nowiki></pre>
+
os aggregate add host
 
+
    <aggregate>
 
+
    <host>
<pre><nowiki>#!bash
+
</source>
nova aggregate-delete <id>
+
|| yes
 
+
|| ||
os delete aggregate ...
+
<source lang="bash">
</nowiki></pre>
+
nova aggregate-add-host
 
+
    <id>
 
+
    <host>
<pre><nowiki>#!bash
+
</source>
nova aggregate-details <id>
+
|-
 
+
|
os show aggregate ...
+
<source lang="bash">
</nowiki></pre>
+
os aggregate create
 
+
    [--zone <availability-zone>]
 
+
    [--property <key=value>]
<pre><nowiki>#!bash
+
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova aggregate-create
 +
    <name>
 +
    [<availability_zone>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os aggregate delete
 +
    <aggregate>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova aggregate-delete
 +
    <id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os aggregate list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 
nova aggregate-list
 
nova aggregate-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os aggregate remove host
 +
    <aggregate>
 +
    <host>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova aggregate-remove-host
 +
    <id>
 +
    <host>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os aggregate set
 +
    [--name <new-name>]
 +
    [--zone <availability-zone>]
 +
    [--property <key=value>]
 +
    <aggregate>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova aggregate-update
 +
    <id>
 +
    <name>
 +
    [<availability_zone>]
  
os list aggregate
+
nova aggregate-set-metadata
</nowiki></pre>
+
    <id>
 
+
    <key=value>
 
+
    [<key=value> ...]
<pre><nowiki>#!bash
+
</source>
nova aggregate-update <id> <name> [<availability_zone>]
+
|-
 
+
|
os set aggregate ...
+
<source lang="bash">
</nowiki></pre>
+
os aggregate show
 
+
    <aggregate>
 
+
</source>
<pre><nowiki>#!bash
+
|| yes
nova aggregate-set-metadata <id> <key=value> [<key=value> ...]
+
|| ||
 
+
<source lang="bash">
os set aggregate --metadata ...
+
nova aggregate-details
</nowiki></pre>
+
    <id>
 
+
</source>
 
+
|}
'''aggregate-host'''
 
 
 
<pre><nowiki>#!bash
 
nova aggregate-add-host <id> <host>
 
  
os add aggregate-host ...
+
==== bash-completion ====
</nowiki></pre>
 
  
 
+
{| class="wikitable"
<pre><nowiki>#!bash
+
|-
nova aggregate-remove-host <id> <host>
+
! OSC Command !! Implemented !! !! Nova command
 
+
|-
os remove aggregate-host ...
+
|
</nowiki></pre>
+
TBD
 
+
|| no
 
+
|| ||
'''bash-completion'''
+
<source lang="bash">
 
 
<pre><nowiki>#!bash
 
 
nova bash-completion
 
nova bash-completion
 +
</source>
 +
|}
  
os show bash-completion
+
==== cloudpipe ====
</nowiki></pre>
 
  
 
+
{| class="wikitable"
'''cloudpipe'''
+
|-
 
+
! OSC Command !! Implemented !! !! Nova command
<pre><nowiki>#!bash
+
|-
nova cloudpipe-create <project>
+
|
 
+
<source lang="bash">
os create cloudpipe ...
+
os create cloudpipe
</nowiki></pre>
+
    <project>
 
+
</source>
 
+
|| no
<pre><nowiki>#!bash
+
|| ||
 +
<source lang="bash">
 +
nova cloudpipe-create
 +
    <project>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os list cloudpipe
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 
nova cloudpipe-list
 
nova cloudpipe-list
 +
</source>
 +
|}
  
os list cloudpipe
+
==== console ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os console log show
 +
    [--lines <num-lines>]
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova console-log
 +
    [--length <length>]
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os console url show
 +
    [--novnc | --xvpvnc | --spice]
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova get-vnc-console
 +
    <server>
 +
    <console_type>
 +
</source>
 +
|}
  
'''console'''
+
==== credentials ====
  
<pre><nowiki>#!bash
+
See [[#credentials|credentials]] in the [[#Cross_API|cross API section]].
nova console-log [--length <length>] <server>
 
  
os show console ...
+
==== diagnostics ====
</nowiki></pre>
 
  
 +
''Consider implementing this as: show server --diagnostics <server>''
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os diagnostics show
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova diagnostics
 +
    <server>
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== dns ====
nova get-vnc-console <server> <console_type>
 
  
os show console [--vnc] ...
+
''These commands need some attention...an IP shouldn't be required for all record types.  They need to be more DNS-y.  Zone anyone?''
</nowiki></pre>
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os create dns
 +
    [--type <type>]
 +
    <ip>
 +
    <name>
 +
    <domain>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova dns-create
 +
    [--type <type>]
 +
    <ip>
 +
    <name>
 +
    <domain>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os delete dns
 +
    <domain>
 +
    <name>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova dns-delete
 +
    <domain>
 +
    <name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os list dns
 +
    [--ip <ip>]
 +
    [--name <name>]
 +
    <domain>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova dns-list
 +
    [--ip <ip>]
 +
    [--name <name>]
 +
    <domain>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os create dns-domain
 +
    [--project <project>]
 +
    [--availability-zone <availability-zone>]
 +
    [--public | --private]
 +
    <domain>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova dns-create-private-domain
 +
    [--availability_zone <availability_zone>]
 +
    <domain>
  
 
+
nova dns-create-public-domain
'''credentials'''
+
    [--project <project>]
 
+
    <domain>
<pre><nowiki>#!bash
+
</source>
nova credentials
+
|-
 
+
|
os show credentials
+
<source lang="bash">
</nowiki></pre>
+
os delete dns-domain
 
+
    <domain>
 
+
</source>
'''diagnostics'''
+
|| no
 
+
|| ||
<pre><nowiki>#!bash
+
<source lang="bash">
nova diagnostics <server>
+
nova dns-delete-domain
 
+
    <domain>
os show diagnostics ...
+
</source>
</nowiki></pre>
+
|-
 
+
|
 
+
<source lang="bash">
'''dns'''
+
os list dns-domains
 
+
</source>
<pre><nowiki>#!bash
+
|| no
nova dns-create [--type <type>] <ip> <name> <domain>
+
|| ||
 
+
<source lang="bash">
os create dns ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova dns-delete <domain> <name>
 
 
 
os delete dns ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova dns-list [--ip <ip>] [--name <name>] <domain>
 
 
 
os list dns ...
 
</nowiki></pre>
 
 
 
 
 
'''dns-domain'''
 
 
 
<pre><nowiki>#!bash
 
nova dns-create-private-domain [--availability_zone <availability_zone>]
 
                              <domain>
 
 
 
os create dns-domain [--private] ...
 
</nowiki></pre>
 
 
 
 
 
'''dns-public-domain'''
 
 
 
<pre><nowiki>#!bash
 
nova dns-create-public-domain [--project <project>] <domain>
 
 
 
os create dns-domain [--public] ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova dns-delete-domain <domain>
 
 
 
os delete dns-domain ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
 
nova dns-domains
 
nova dns-domains
 +
</source>
 +
|}
  
os list dns-domains
+
==== endpoints ====
</nowiki></pre>
 
 
 
  
'''endpoints'''
+
''Totally duplicates Identity catalog command''
 
+
{| class="wikitable"
<pre><nowiki>#!bash
+
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os endpoint list
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 
nova endpoints
 
nova endpoints
 +
</source>
 +
|}
  
os list endpoints
+
==== fixed-ip ====
 
 
# does this overlap with keystone?
 
</nowiki></pre>
 
 
 
  
'''fixed-ip'''
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip fixed add
 +
    <network>
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova add-fixed-ip
 +
    <server>
 +
    <network_id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip fixed remove
 +
    <ip-address>
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova remove-fixed-ip
 +
    <server>
 +
    <address>
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
 
nova add-fixed-ip <server> <network_id>
 
  
os add fixed-ip ...
+
==== flavor ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os flavor create
 +
    [--id <id>]
 +
    [--ram <size-mb>]
 +
    [--disk <size-gb>]
 +
    [--ephemeral-disk <size-gb>]
 +
    [--swap <size-mb>]
 +
    [--vcpus <num-cpu>]
 +
    [--rxtx-factor <factor>]
 +
    [--public | --private]
 +
    <name>
 +
</source>
 +
||
 +
<source lang="bash">
 +
(partial)
 +
default: auto
 +
default: 256M
 +
default: 0G
 +
default: 0G
 +
default: 0G
 +
default: 1
 +
default: 1
 +
default: public
  
<pre><nowiki>#!bash
+
</source>
nova remove-fixed-ip <server> <address>
+
|| ||
 
+
<source lang="bash">
os remove fixed-ip ...
+
nova flavor-create
</nowiki></pre>
+
    [--ephemeral <ephemeral>]  
 
+
    [--swap <swap>]
 
+
    [--rxtx-factor <factor>]
'''flavor'''
+
    <name>
 
+
    <id>
<pre><nowiki>#!bash
+
    <ram>
nova flavor-create [--ephemeral <ephemeral>]  
+
    <disk>
                  [--swap <swap>]
+
    <vcpus>
                  [--rxtx-factor <factor>]
+
</source>
                  <name> <id> <ram> <disk> <vcpus>
+
|-
 
+
|
os create flavor ...
+
<source lang="bash">
</nowiki></pre>
+
os flavor delete
 
+
    <flavor>
 
+
</source>
<pre><nowiki>#!bash
+
|| yes
nova flavor-delete <id>
+
|| ||
 
+
<source lang="bash">
os delete flavor ...
+
nova flavor-delete  
</nowiki></pre>
+
    <id>
 
+
</source>
 
+
|-
<pre><nowiki>#!bash
+
|
 +
<source lang="bash">
 +
os flavor list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 
nova flavor-list
 
nova flavor-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os flavor show
 +
    <flavor>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
  
os list flavor
 
</nowiki></pre>
 
 
 
'''floating-ip'''
 
 
<pre><nowiki>#!bash
 
nova add-floating-ip <server> <address>
 
 
os add floating-ip ...
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
nova floating-ip-create [<floating_ip_pool>]
 
 
os create floating-ip ...
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
nova floating-ip-delete <address>
 
 
os delete floating-ip
 
</nowiki></pre>
 
  
 +
==== floating-ip ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating add
 +
    <ip-address>
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova add-floating-ip
 +
    <server>
 +
    <address>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating create
 +
    [<pool>]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova floating-ip-create
 +
    [<floating_ip_pool>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating delete
 +
    <ip-address>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova floating-ip-delete
 +
    <address>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 
nova floating-ip-list
 
nova floating-ip-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating remove
 +
    <ip-address>
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova remove-floating-ip
 +
    <server>
 +
    <address>
 +
</source>
 +
|}
  
os list floating-ip
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
nova remove-floating-ip <server> <address>
 
 
os remove floating-ip ...
 
</nowiki></pre>
 
  
 +
==== floating-ip-pool ====
  
'''floating-ip-pool'''
 
  
<pre><nowiki>#!bash
+
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating pool list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 
nova floating-ip-pool-list
 
nova floating-ip-pool-list
 +
</source>
 +
|}
  
os list floating-ip-pool
 
</nowiki></pre>
 
 
 
'''host'''
 
 
<pre><nowiki>#!bash
 
nova host-action [--action <action>] <hostname>
 
 
os ?? host ...
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
nova host-update [--status <status>]
 
                [--maintenance <maintenance_mode>]
 
                <hostname>
 
  
os set host ...
+
==== host ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os host list
 +
    [--zone <availability-zone>]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova host-action
 +
    [--action <action>]
 +
    <hostname>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os host set
 +
    ...
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova host-update
 +
    [--status <status>]
 +
    [--maintenance <maintenance_mode>]
 +
    <hostname>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os host show
 +
    <host>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
  
'''image'''
 
  
<pre><nowiki>#!bash
+
==== hypervisor ====
nova image-create [--poll] <server> <name>
 
  
os create image ...
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os hypervisor list
 +
    [--matching <hostname>]
 +
</source>
 +
|| yes
 +
|| ||
 +
|-
 +
|
 +
<source lang="bash">
 +
os hypervisor show
 +
    <id>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
  
  
<pre><nowiki>#!bash
+
==== keypair ====
nova image-delete <image>
 
  
os delete image ...
+
{| class="wikitable"
</nowiki></pre>
+
|-
 
+
! OSC Command !! Implemented !! !! Nova command
 
+
|-
<pre><nowiki>#!bash
+
|
nova image-list
+
<source lang="bash">
 
+
os keypair create
os list image
+
    [--public-key <file>]
</nowiki></pre>
+
    <name>
 
+
</source>
 
+
|| yes
<pre><nowiki>#!bash
+
|| ||
nova image-meta <image> <action> <key=value> [<key=value> ...]
+
<source lang="bash">
 
+
nova keypair-add
os set image ...
+
    [--pub_key <pub_key>]
</nowiki></pre>
+
    <name>
 
+
</source>
 
+
|-
<pre><nowiki>#!bash
+
|
nova image-show <image>
+
<source lang="bash">
 
+
os keypair delete
os show image ...
+
    <name>
</nowiki></pre>
+
</source>
 
+
|| yes
 
+
|| ||
'''keypair'''
+
<source lang="bash">
 
+
nova keypair-delete
<pre><nowiki>#!bash
+
    <name>
nova keypair-add [--pub_key <pub_key>] <name>
+
</source>
 
+
|-
os create keypair ...
+
|
</nowiki></pre>
+
<source lang="bash">
 
+
os keypair list
 
+
</source>
<pre><nowiki>#!bash
+
|| yes
nova keypair-delete <name>
+
|| ||
 
+
<source lang="bash">
os delete keypair
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
 
nova keypair-list
 
nova keypair-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os keypair show
 +
    [--public-key]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
  
os list keypair
 
</nowiki></pre>
 
 
 
'''limits'''
 
  
<pre><nowiki>#!bash
+
==== limits ====
nova absolute-limits
 
  
os show limits --absolute
+
See [[#limits|limits]] in the [[#Cross_API|cross API section]].
## is there any other kind?
 
</nowiki></pre>
 
  
 +
==== quota ====
  
'''quota'''
+
See [[#quota|quota]] in the [[#Cross_API|cross API section]].
  
<pre><nowiki>#!bash
 
nova quota-defaults <tenant_id>
 
nova quota-show <tenant_id>
 
  
os show quota <tenant> [--defaults]
+
==== resource ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os show resource
 +
    <hostname>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova describe-resource
 +
    <hostname>
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== secgroup ====
nova quota-update [--instances <instances>]
 
                  [--cores <cores>]
 
                  [--ram <ram>]
 
                  [--volumes <volumes>]
 
                  [--gigabytes <gigabytes>]
 
                  [--floating-ips <floating_ips>]
 
                  [--metadata-items <metadata_items>]
 
                  [--injected-files <injected_files>]
 
                  [--injected-file-content-bytes <injected_file_content_bytes>]
 
                  <tenant_id>
 
  
os set quota ...
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup add
  
 
+
(see server add secgroup)
'''quota-class'''
+
</source>
 
+
|| no
<pre><nowiki>#!bash
+
|| ||
nova quota-class-show <class>
+
<source lang="bash">
 
+
nova add-secgroup
os show quota-class ...
+
    <server>
</nowiki></pre>
+
    <secgroup>
 
+
</source>
 
+
|-
<pre><nowiki>#!bash
+
|
nova quota-class-update [--instances <instances>]
+
<source lang="bash">
                        [--cores <cores>]
+
os secgroup create
                        [--ram <ram>]
+
    [--description <description>]
                        [--volumes <volumes>]
+
    <name>
                        [--gigabytes <gigabytes>]
+
</source>
                        [--floating-ips <floating_ips>]
+
|| yes
                        [--metadata-items <metadata_items>]
+
|| ||
                        [--injected-files <injected_files>]
+
<source lang="bash">
                        [--injected-file-content-bytes <injected_file_content_bytes>]
+
nova secgroup-create
                        <class>
+
    <name>
 
+
    <description>
os set quota-class ...
+
</source>
</nowiki></pre>
+
|-
 
+
|
 
+
<source lang="bash">
'''rate-limits'''
+
os secgroup delete
 
+
    <group>
<pre><nowiki>#!bash
+
</source>
nova rate-limits
+
|| yes
 
+
|| ||
os show rate-limits
+
<source lang="bash">
</nowiki></pre>
+
nova secgroup-delete
 
+
    <secgroup>
 
+
</source>
'''resource'''
+
|-
 
+
|
<pre><nowiki>#!bash
+
<source lang="bash">
nova describe-resource <hostname>
+
os secgroup list
 
+
    [--all-projects]
os show resource ...
+
</source>
</nowiki></pre>
+
|| yes
 
+
|| ||
 
+
<source lang="bash">
'''secgroup'''
 
 
 
<pre><nowiki>#!bash
 
nova secgroup-create <name> <description>
 
 
 
os create secgroup ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova secgroup-delete <secgroup>
 
 
 
os delete secgroup ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
 
nova secgroup-list
 
nova secgroup-list
 +
    [--all-tenants [<0|1>]]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup remove
  
os list secgroup
+
(see server remove secgroup)
</nowiki></pre>
+
</source>
 
+
|| no
 
+
|| ||
'''secgroup-group-rule'''
+
<source lang="bash">
 
+
nova remove-secgroup
<pre><nowiki>#!bash
+
    <server>
nova secgroup-add-group-rule [--ip_proto <ip_proto>]
+
    <secgroup>
                            [--from_port <from_port>]
+
</source>
                            [--to_port <to_port>]
+
|-
                            <secgroup> <source_group>
+
|
 
+
<source lang="bash">
os create secgroup-group-rule
+
os secgroup set
</nowiki></pre>
+
    [--name <new-name>]
 
+
    [--description [<new-description>]
 
+
    <group>
<pre><nowiki>#!bash
+
</source>
nova secgroup-delete-group-rule [--ip_proto <ip_proto>]
+
|| yes
                                [--from_port <from_port>]
+
|| ||
                                [--to_port <to_port>]
+
<source lang="bash">
                                <secgroup> <source_group>
+
nova secgroup-update
 
+
    <secgroup>
os delete secgroup-group-rule ...
+
    <name>
</nowiki></pre>
+
    <description>
 
+
</source>
 
+
|-
'''secgroup-rule'''
+
|
 
+
<source lang="bash">
<pre><nowiki>#!bash
+
os secgroup show
nova secgroup-add-rule <secgroup> <ip_proto> <from_port> <to_port> <cidr>
+
    <group>
 
+
</source>
os create secgroup-rule
+
|| yes
</nowiki></pre>
+
|| ||
 
+
<source lang="bash">
 
+
n/a
<pre><nowiki>#!bash
+
</source>
nova secgroup-delete-rule <secgroup> <ip_proto> <from_port> <to_port> <cidr>
+
|}
 
 
os delete secgroup-rule
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova secgroup-list-rules <secgroup>
 
 
 
os list secgroup-rule ...
 
</nowiki></pre>
 
 
 
 
 
'''server'''
 
 
 
<pre><nowiki>#!bash
 
nova boot [--flavor <flavor>]
 
          [--image <image>]  
 
          [--meta <key=value>]
 
          [--file <dst-path=src-path>]
 
          [--key_name <key_name>]
 
          [--user_data <user-data>]
 
          [--availability_zone <availability-zone>]
 
          [--security_groups <security_groups>]
 
          [--block_device_mapping <dev_name=mapping>]
 
          [--hint <key=value>]
 
          [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr>]
 
          [--config-drive <value>]
 
          [--poll]
 
          <name>
 
 
 
os create server
 
          --image <image>
 
          --flavor <flavor>
 
          [--security-groups <security-group-list>]
 
          [--key-name <key-name>]
 
          [--meta-data <key=value> [--meta-data <key=value] ... ]
 
          [--file <dest-filename=source-filename> [--file <dest-filename=source-filename>] ... ]
 
          [--user-data <user-data>]
 
          [--reservation-id <uuid>]
 
          [--availability-zone <zone-name>]
 
          [--block-device-mapping <dev-name=mapping>]
 
          [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr>]
 
          [--hint <key=value>]
 
          [--config-drive <value>]
 
          [--min <count>]
 
          [--max <count>]
 
          [--wait]
 
          <server-name>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova delete <server>
 
 
 
os delete server <server>
 
</nowiki></pre>
 
 
 
 
 
 
 
<pre><nowiki>#!bash
 
nova list [--reservation_id <reservation_id>]
 
          [--ip <ip_regexp>]
 
          [--ip6 <ip6_regexp>]
 
          [--name <name_regexp>]
 
          [--instance_name <name_regexp>]
 
          [--status <status>]
 
          [--flavor <flavor>] [--image <image>]
 
          [--host <hostname>]
 
          [--all_tenants [<0|1>]]
 
 
 
os list server
 
          [--reservation-id <reservation_id>]
 
          [--ip <ip_regexp>]
 
          [--ip6 <ip6_regexp>]
 
          [--name <name_regexp>]
 
          [--instance_name <name_regexp>]
 
          [--status <status>]
 
          [--flavor <flavor>]
 
          [--image <image>]
 
          [--host <hostname>]
 
          [--all-tenants]
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova lock <server>
 
 
 
os lock server <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova live-migration [--block_migrate]
 
                    [--disk_over_commit]
 
                    <server> <host>
 
nova migrate [--poll] <server>
 
 
 
os migrate server --live
 
          [--block_migrate]
 
          [--disk_over_commit]
 
          <server>
 
          <host>
 
os migrate server [--wait] <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova pause <server>
 
 
 
os pause server <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova reboot [--hard] [--poll] <server>
 
 
 
os reboot server [--hard] [--wait] <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova rebuild [--rebuild_password <rebuild_password>]
 
            [--poll]
 
            <server> <image>
 
 
 
os rebuild server
 
          --image <image>
 
          [--rebuild-password <rebuild-password>]
 
          [--wait]
 
          <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova rename <server> <name>
 
 
 
os rename server <server> <new-name>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova rescue <server>
 
 
 
os rescue server <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova resize [--poll] <server> <flavor>
 
 
 
os resize server --flavor <flavor> [--wait] <server>
 
</nowiki></pre>
 
 
 
  
<pre><nowiki>#!bash
+
==== secgroup-group-rule ====
nova resize-confirm <server>
 
  
os resize server --confirm <server>
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup group rule create
 +
    [--proto <protocol>]
 +
    [--port <port>:<port>]
 +
    <source-group>
 +
    <secgroup>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-add-group-rule
 +
    [--ip_proto <ip_proto>]
 +
    [--from_port <from_port>]
 +
    [--to_port <to_port>]
 +
    <secgroup>
 +
    <source_group>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup group rule delete
 +
    [--proto <protocol>]
 +
    [--port <port>:<port>]
 +
    <source-group>
 +
    <secgroup>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-delete-group-rule
 +
    [--ip_proto <ip_proto>]
 +
    [--from_port <from_port>]
 +
    [--to_port <to_port>]
 +
    <secgroup>
 +
    <source_group>
 +
</source>
 +
|}
  
 +
==== secgroup-rule ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
nova resume <server>
+
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup rule create
 +
    [--proto <proto>]
 +
    [--src-ip <ip-address>]
 +
    [--dst-port <port-range>]
 +
    <group>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-add-rule
 +
    <secgroup>
 +
    <ip_proto>
 +
    <from_port>
 +
    <to_port>
 +
    <cidr>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup rule delete
 +
    [--proto <proto>]
 +
    [--src-ip <ip-address>]
 +
    [--dst-port <port-range>]
 +
    <group>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-delete-rule
 +
    <secgroup>
 +
    <ip_proto>
 +
    <from_port>
 +
    <to_port>
 +
    <cidr>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup rule list
 +
    <group>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-list-rules
 +
    <secgroup>
 +
</source>
 +
|}
  
os resume server <server>
+
====server====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os server add secgroup
 +
    <server>
 +
    <group>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova add-secgroup
 +
    <server>
 +
    <secgroup>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server create
 +
    --image <image>
 +
    --flavor <flavor>
 +
    [--security-group <security-group-list> [...] ]
 +
    [--key-name <key-name>]
 +
    [--meta-data <key=value> [...] ]
 +
    [--file <dest-filename=source-filename>] [...] ]
 +
    [--user-data <user-data>]
 +
    [--availability-zone <zone-name>]
 +
    [--block-device-mapping <dev-name=mapping> [...] ]
 +
    [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr> [...] ]
 +
    [--hint <key=value> [...] ]
 +
    [--config-drive <value>|True ]
 +
    [--min <count>]
 +
    [--max <count>]
 +
    [--wait]
 +
    <server-name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova boot
 +
    [--flavor <flavor>]
 +
    [--image <image>]
 +
    [--meta <key=value>]
 +
    [--file <dst-path=src-path>]
 +
    [--key_name <key_name>]
 +
    [--user_data <user-data>]
 +
    [--availability_zone <availability-zone>]
 +
    [--security_groups <security_groups>]
 +
    [--block_device_mapping <dev_name=mapping>]
 +
    [--hint <key=value>]
 +
    [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr>]
 +
    [--config-drive <value>]
 +
    [--poll]
 +
    <name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server delete
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova delete
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server list
 +
    [--reservation-id <reservation-id>]
 +
    [--ip <ip-regex>]
 +
    [--ip6 <ip6-regex>]
 +
    [--name <name-regex>]
 +
    [--instance-name <instance-name-regex>]
 +
    [--status <status>]
 +
    [--flavor <flavor>]
 +
    [--image <image>]
 +
    [--host <hostname>]
 +
    [--all-tenants]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova list
 +
    [--reservation_id <reservation_id>]
 +
    [--ip <ip_regexp>]
 +
    [--ip6 <ip6_regexp>]
 +
    [--name <name_regexp>]
 +
    [--instance_name <name_regexp>]
 +
    [--status <status>]
 +
    [--flavor <flavor>] [--image <image>]
 +
    [--host <hostname>]
 +
    [--all_tenants [<0|1>]]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server lock
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova lock
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server migrate
 +
    --live
 +
    [--block_migrate]
 +
    [--disk_over_commit]
 +
    <server>
 +
    <host>
  
<pre><nowiki>#!bash
+
os server migrate
nova resize-revert <server>
+
    [--wait]
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova live-migration
 +
    [--block_migrate]
 +
    [--disk_over_commit]
 +
    <server>
 +
<host>
  
os resize server --revert <server>
+
nova migrate
</nowiki></pre>
+
    [--poll]
 
+
    <server>
 
+
</source>
<pre><nowiki>#!bash
+
|-
nova meta <server> <action> <key=value> [<key=value> ...]
+
|
 
+
<source lang="bash">
os set server
+
os server pause
          --meta-data <key=value>
+
    <server>
          [--meta-data <key=value>] ...
+
</source>
          <server>
+
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova pause
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server reboot
 +
    [--hard | --soft]
 +
    [--wait]
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova reboot
 +
    [--hard]
 +
    [--poll]
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server rebuild
 +
    --image <image>
 +
    [--password <password>]
 +
    [--wait]
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova rebuild
 +
    [--rebuild_password <rebuild_password>]
 +
    [--poll]
 +
    <server>
 +
    <image>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server remove secgroup
 +
    <server>
 +
    <group>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova remove-secgroup
 +
    <server>
 +
    <secgroup>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server rename
 +
    <server>
 +
    <new-name>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova rename
 +
    <server>
 +
    <name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server rescue
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova rescue
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server resize
 +
    --flavor <flavor>
 +
    [--wait]
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova resize
 +
    [--poll]
 +
    <server>
 +
    <flavor>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server resize
 +
    --confirm
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova resize-confirm
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server resume
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova resume
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server set
 +
    --meta-data <key=value>
 +
    [--meta-data <key=value>] ...
 +
    <server>
 
os unset server
 
os unset server
          --meta-data <key>
+
    --meta-data <key>
          [--meta-data <key>] ...
+
    [--meta-data <key>] ...
          <server>
+
    <server>
</nowiki></pre>
+
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova meta
 +
    <server>
 +
    <action>
 +
    <key=value>
 +
    [<key=value> ...]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server set
 +
    --root-password
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova root-password
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server show
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova show
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server ssh
 +
    [--port PORT]
 +
    --private]
 +
    [--ipv6]
 +
    [--login <login>]
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova ssh
 +
    [--port PORT]
 +
    [--private]
 +
    [--ipv6]
 +
    [--login <login>]
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server suspend
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova suspend
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server unlock
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova unlock
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server unpause
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova unpause
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server unrescue
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova unrescue
 +
    <server>
 +
</source>
 +
|}
  
 +
==== usage ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
nova root-password <server>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os usage list
 +
    [--start <start>]
 +
    [--end <end>]
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova usage-list
 +
    [--start <start>]
 +
    [--end <end>]
 +
</source>
 +
|}
  
os set server --root-password <server>
 
</nowiki></pre>
 
  
 +
==== volume ====
  
<pre><nowiki>#!bash
+
{| class="wikitable"
nova show <server>
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume attach
 +
    <volume>
 +
    <server>
 +
    <device>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova volume-attach
 +
    <server>
 +
    <volume>
 +
    <device>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume detach
 +
    <server>
 +
    <volume>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova volume-detach
 +
    <server>
 +
    <volume>
 +
</source>
 +
|}
  
os show server <server>
 
</nowiki></pre>
 
  
 +
==== x509-cert ====
  
<pre><nowiki>#!bash
+
See [[#credentials|credentials]] in the [[#Cross_API|cross API section]].
nova ssh [--port PORT] [--private] [--ipv6] [--login <login>] <server>
 
  
os ssh server
+
==== x509-root-cert ====
          [--port PORT]
 
          [--private]
 
          [--ipv6]
 
          [--login <login>]
 
          <server>
 
</nowiki></pre>
 
  
 +
See [[#credentials|credentials]] in the [[#Cross_API|cross API section]].
  
<pre><nowiki>#!bash
+
== Image ==
nova suspend <server>
 
  
os suspend server <server>
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Option !!  Environment Variable !!  !!  Glance Option !!  Environment Variable
 +
|-
 +
| --os-image-api-version <ver> || OS_IMAGE_API_VERSION ||  || --os-image-api-version <ver> || OS_IMAGE_API_VERSION
 +
|-
 +
|  ||  || || --os-service-type <type> || OS_SERVICE_TYPE
 +
|-
 +
|  ||  || || --os-endpoint-type <type> || OS_ENDPOINT_TYPE
 +
|-
 +
| --os-token <token> || OS_TOKEN || || --os-auth-token <token> || OS_AUTH_TOKEN
 +
|-
 +
| --os-url <url> || OS_URL || || --os-image-url <url> || OS_IMAGE_URL
 +
|-
 +
|  ||  || || --os-cacert <file> || OS_CACERT
 +
|-
 +
|  ||  || || --cert-file <file> || CERT_FILE
 +
|-
 +
|  ||  || || --key-file <key-file> || KEY_FILE
 +
|-
 +
|  ||  || || --no-ssl-compression ||
 +
|-
 +
|}
  
  
<pre><nowiki>#!bash
+
=== API v1 ===
nova unlock <server>
 
  
os unlock server <server>
+
==== image ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Glance command
 +
|-
 +
|
 +
<source lang="bash">
 +
os image create
 +
    [--id <id>]
 +
    [--store <store>]
 +
    [--container-format <format>]
 +
    [--disk-format <format>]
 +
    [--owner <tenant>]
 +
    [--size <size-bytes>]
 +
    [--min-disk <disk-gb>]
 +
    [--min-ram <ram-mg>]
 +
    [--location <image-url>]
 +
    [--copy-from <image-url>]
 +
    [--file <local-filename>]
 +
    [--checksum <checksum>]
 +
    [--protected | --unprotected]
 +
    [--public | --private]
 +
    [--property <key=value>]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-create
 +
    [--id <IMAGE_ID>]
 +
    [--name <NAME>]
 +
    [--disk-format <DISK_FORMAT>]
 +
    [--container-format <CONTAINER_FORMAT>]
 +
    [--owner <TENANT_ID>]
 +
    [--size <SIZE>]
 +
    [--min-disk <DISK_GB>]
 +
    [--min-ram <DISK_RAM>]
 +
    [--location <IMAGE_URL>]
 +
    [--checksum <CHECKSUM>]
 +
    [--copy-from <IMAGE_URL>]
 +
    [--is-public [True|False]]
 +
    [--is-protected [True|False]]
 +
    [--property <key=value>]
 +
    [--human-readable]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image delete
 +
    <image>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-delete
 +
    <IMAGE_ID>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image list
 +
    [--page-size <size>]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image save
 +
    [--file <filename>]
 +
    <image>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-download
 +
    [--file <FILE>]
 +
    <IMAGE>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image set
 +
    [--name <name>]
 +
    [--owner <tenant>]
 +
    [--min-disk <disk-gb>]
 +
    [--min-ram <ram-mg>]
 +
    [--protected | --unprotected]
 +
    [--public | --private]
 +
    [--property <key=value>]
 +
    <image>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-update
 +
    [--name <NAME>]
 +
    [--disk-format <DISK_FORMAT>]
 +
    [--container-format <CONTAINER_FORMAT>]
 +
    [--owner <TENANT_ID>]
 +
    [--size <SIZE>]
 +
    [--min-disk <DISK_GB>]
 +
    [--min-ram <DISK_RAM>]
 +
    [--location <IMAGE_URL>]
 +
    [--file <FILE>]
 +
    [--checksum <CHECKSUM>]
 +
    [--copy-from <IMAGE_URL>]
 +
    [--is-public [True|False]]
 +
    [--is-protected [True|False]]
 +
    [--property <key=value>]
 +
    [--purge-props]
 +
    [--human-readable]
 +
    <IMAGE>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image show
 +
    <image>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-show
 +
    [--human-readable]
 +
    <IMAGE>
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
=== API v2 ===
nova unpause <server>
 
 
 
os unpause server <server>
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova unrescue <server>
 
 
 
os unrescue server <server>
 
</nowiki></pre>
 
 
 
 
 
'''usage'''
 
 
 
<pre><nowiki>#!bash
 
nova usage-list [--start <start>] [--end <end>]
 
 
 
os list usage ...
 
</nowiki></pre>
 
 
 
 
 
'''volume'''
 
 
 
<pre><nowiki>#!bash
 
nova volume-attach <server> <volume> <device>
 
 
 
os attach volume ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-create [--snapshot_id <snapshot_id>]
 
                  [--display_name <display_name>]
 
                  [--display_description <display_description>]
 
                  [--volume_type <volume_type>]
 
                  <size>
 
 
 
os create volume ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-delete <volume>
 
 
 
os delete volume ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-detach <server> <volume>
 
 
 
os detach volume ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova nova volume-list
 
 
 
os list volume
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-show <volume>
 
 
 
os show volume ...
 
</nowiki></pre>
 
 
 
 
 
'''volume-snapshot'''
 
 
 
<pre><nowiki>#!bash
 
nova volume-snapshot-create [--force <True|False>]
 
                            [--display_name <display_name>]
 
                            [--display_description <display_description>]
 
                            <volume_id>
 
 
 
os create volume-snapshot ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-snapshot-delete <snapshot_id>
 
 
 
os delete volume-snapshot ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-snapshot-list
 
 
 
os list volume-snapshot
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
nova volume-snapshot-show <snapshot>
 
 
 
os show volume-snapshot
 
</nowiki></pre>
 
 
 
 
 
'''volume-type'''
 
 
 
<pre><nowiki>#!bash
 
nova volume-type-create <name>
 
 
 
os create volume-type ...
 
</nowiki></pre>
 
 
 
  
<pre><nowiki>#!bash
+
==== image ====
nova volume-type-delete <id>
 
  
os delete volume-type ...
+
{| class="wikitable"
</nowiki></pre>
+
|-
 
+
! OSC Command !! Implemented !! !! Glance command
 
+
|-
<pre><nowiki>#!bash
+
|
nova volume-type-list
+
<source lang="bash">
 
+
os image delete
os list volume-type
+
    <image>
</nowiki></pre>
+
</source>
 
+
|| yes
 
+
|| ||
'''x509-cert'''
+
<source lang="bash">
 
+
glance image-delete
<pre><nowiki>#!bash
+
    <IMAGE_ID>
nova x509-create-cert [<private_key_file>] [<x509_cert>]
+
</source>
 
+
|-
os create x509-cert ...
+
|
</nowiki></pre>
+
<source lang="bash">
 
+
os image list
 
+
    [--page-size <size>]
'''x509-root-cert'''
+
</source>
 
+
|| yes
<pre><nowiki>#!bash
+
|| ||
nova x509-get-root-cert [<filename>]
+
<source lang="bash">
 
 
os show x509-root-cert ...
 
</nowiki></pre>
 
 
 
 
 
== Glance (new) ==
 
 
 
* Verbs:
 
** glance: create, delete, list, show
 
** os: create, delete, list, show
 
* Objects:
 
** glance: image, member, members
 
** os: image, member
 
 
 
'''glance'''
 
 
 
<pre><nowiki>#!csv ,
 
Command-line Option,Environment Variable
 
  --os-username <auth-user-name>,                    OS_USERNAME
 
  --os-password <auth-password>,                      OS_PASSWORD
 
  --os-tenant-id <tenant-id>,                        OS_TENANT_ID
 
  --os-auth-url <auth-url>,                          OS_AUTH_URL
 
  --os-region-name <region-name>,                    OS_REGION_NAME
 
  --os-auth-token <auth-token>,                            OS_AUTH_TOKEN
 
  --os-image-url <image-service-endpoint>,                      OS_IMAGE_URL
 
 
 
  --os-tenant-name <tenant-name>,                        OS_TENANT_NAME
 
  --os-image-api-version <image-api-version>,  OS_IMAGE_API_VERSION
 
</nowiki></pre>
 
 
 
 
 
'''image'''
 
 
 
<pre><nowiki>#!bash
 
glance image-create [--id <IMAGE_ID>] [--name <NAME>]
 
                                  [--disk-format <CONTAINER_FORMAT>]
 
                                  [--container-format <DISK_FORMAT>]
 
                                  [--owner <TENANT_ID>] [--size <SIZE>]
 
                                  [--min-disk <DISK_GB>] [--min-ram <DISK_RAM>]
 
                                  [--location <IMAGE_URL>] [--checksum <CHECKSUM>]
 
                                  [--copy-from <IMAGE_URL>] [--public] [--protected]
 
                                  [--property <key=value>]
 
 
 
os create image ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
glance image-delete <IMAGE_ID>
 
 
 
os delete image ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
 
glance image-list
 
glance image-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
glance member-images
 +
    [options]
 +
    <MEMBER>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image save
 +
    [--file <filename>]
 +
    <image>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-download
 +
    [--file <FILE>]
 +
    <IMAGE>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image set
 +
    [--id <id>]
 +
    [--store <store>]
 +
    [--container-format <format>]
 +
    [--disk-format <format>]
 +
    [--owner <tenant>]
 +
    [--size <size-bytes>]
 +
    [--min-disk <disk-gb>]
 +
    [--min-ram <ram-mg>]
 +
    [--location <image-url>]
 +
    [--copy-from <image-url>]
 +
    [--file <local-filename>]
 +
    [--checksum <checksum>]
 +
    [--protected | --unprotected]
 +
    [--public | --private]
 +
    [--property <key=value>]
 +
    <name>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
glance image-update
 +
    [--name <NAME>]
 +
    [--disk-format <DISK_FORMAT>]
 +
    [--container-format <CONTAINER_FORMAT>]
 +
    [--owner <TENANT_ID>]
 +
    [--size <SIZE>]
 +
    [--min-disk <DISK_GB>]
 +
    [--min-ram <DISK_RAM>]
 +
    [--location <IMAGE_URL>]
 +
    [--file <FILE>]
 +
    [--checksum <CHECKSUM>]
 +
    [--copy-from <IMAGE_URL>]
 +
    [--is-public [True|False]]
 +
    [--is-protected [True|False]]
 +
    [--property <key=value>]
 +
    [--purge-props]
 +
    [--human-readable]
 +
    <IMAGE>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os image show
 +
    <image>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
glance image-show
 +
    [--human-readable]
 +
    <IMAGE>
 +
</source>
 +
|}
  
os list image ...
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
glance image-show <IMAGE_ID>
 
 
os show image ...
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
glance member-images [options] <MEMBER>
 
 
os list image --member <member> [options]
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
glance show [options] <ID>
 
 
os show image ...
 
</nowiki></pre>
 
 
 
<pre><nowiki>#!bash
 
glance update [options] <ID> <field1=value1 field2=value2 ...>
 
  
os set image ...
+
==== image-member ====
</nowiki></pre>
 
  
 +
Need to discuss the future of these commands with markwash...
  
'''image-member'''
+
<source lang="bash">
 
 
<pre><nowiki>#!bash
 
 
glance member-create [--can-share] <IMAGE_ID> <TENANT_ID>
 
glance member-create [--can-share] <IMAGE_ID> <TENANT_ID>
  
 
os create image-member ...
 
os create image-member ...
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
glance member-delete <IMAGE_ID> <TENANT_ID>
 
glance member-delete <IMAGE_ID> <TENANT_ID>
  
 
os list image-member <image> [options]
 
os list image-member <image> [options]
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
glance member-delete [options] <ID> <MEMBER>
 
glance member-delete [options] <ID> <MEMBER>
  
 
os delete image-member ...
 
os delete image-member ...
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
glance member-list [--image-id <IMAGE_ID>] [--tenant-id <TENANT_ID>]
 
glance member-list [--image-id <IMAGE_ID>] [--tenant-id <TENANT_ID>]
  
 
os list image-member ...
 
os list image-member ...
</nowiki></pre>
+
</source>
 
 
 
 
== Glance (old) ==
 
 
 
* Verbs:
 
** glance: add, clear, delete, details, index, replace, show, update
 
** os: create, delete, list, set, show
 
* Objects:
 
** glance: image, member, members
 
** os: image, image-member
 
 
 
'''glance (old)'''
 
 
 
<pre><nowiki>#!bash
 
  --version
 
  --silent-upload
 
  -v, --verbose
 
  -d, --debug
 
  -H ADDRESS, --host=ADDRESS
 
  -p PORT, --port=PORT
 
  --ssl
 
  -U URL, --url=URL
 
  -k, --insecure
 
  -A TOKEN, --os_auth_token=TOKEN
 
  -I USER, --os_username=USER
 
  -K PASSWORD, --os_password=PASSWORD
 
  -R REGION, --os_region_name=REGION
 
  -T TENANT, --os_tenant_name=TENANT
 
  -N AUTH_URL, --os_auth_url=AUTH_URL
 
  -S STRATEGY, --os_auth_strategy=STRATEGY
 
  --limit=LIMIT
 
  --marker=MARKER
 
  --sort_key=KEY
 
  --sort_dir=[desc|asc]
 
  -f, --force
 
  --dry-run
 
  --can-share
 
</nowiki></pre>
 
 
 
 
 
'''image'''
 
 
 
<pre><nowiki>#!bash
 
glance add [options] <field1=value1 field2=value2 ...> [ < /path/to/image ]
 
 
 
os create image ...
 
</nowiki></pre>
 
  
 +
== Volume ==
  
<pre><nowiki>#!bash
+
{| class="wikitable"
glance clear [options]
+
|-
 +
! Cinder Option !!  Environment Variable !!  !!  OSC Option !!  Environment Variable
 +
|-
 +
| --os-volume-api-version <ver> || OS_VOLUME_API_VERSION ||  || --os-volume-api-version <ver> || OS_VOLUME_API_VERSION
 +
|-
 +
| --service-type <type> ||  ||  ||  ||
 +
|-
 +
| --service-name <name> || CINDER_SERVICE_NAME ||  ||  ||
 +
|-
 +
| --volume-service-name <name> || CINDER_VOLUME_SERVICE_NAME ||  ||  ||
 +
|-
 +
| --endpoint-type <type> || CINDER_ENDPOINT_TYPE ||  ||  ||
 +
|-
 +
| --retries <int> ||  ||  ||  ||
 +
|-
 +
|}
  
os delete image ... [--all]
 
</nowiki></pre>
 
  
 +
=== API v1.0 ===
  
<pre><nowiki>#!bash
+
==== limits ====
glance delete [options] <ID>
 
  
os delete image ...
+
See [[#limits|limits]] in the [[#Cross_API|cross API section]].
</nowiki></pre>
 
  
 +
==== quota ====
  
<pre><nowiki>#!bash
+
See [[#quota|quota]] in the [[#Cross_API|cross API section]].
glance index [options] <field1=value1 field2=value2 ...>
 
  
os list image ...
+
==== snapshot ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Cinder command
 +
|-
 +
|
 +
<source lang="bash">
 +
os snapshot create
 +
    --name <name>
 +
    [--description <description>]
 +
    [--force]
 +
    <volume>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder snapshot-create
 +
    --force <True|False>
 +
    --display-name <display-name>
 +
    --display-description <display-description>
 +
    <volume-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os snapshot delete
 +
    <snapshot>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder snapshot-delete
 +
    <snapshot-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os snapshot list
 +
</source>
 +
|| yes (no opts yet)
 +
|| ||
 +
<source lang="bash">
 +
cinder snapshot-list
 +
    --all-tenants [<0|1>]
 +
    --display-name <display-name>
 +
    --status <status>
 +
    --volume-id <volume-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os snapshot set
 +
    [--name <new-name>]
 +
    [--description <new-description>]
 +
    <snapshot>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder snapshot-rename
 +
    --display-description <display-description>
 +
    --display-name <display-name>
 +
    <snapshot-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os snapshot show
 +
    <snapshot>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder snapshot-show
 +
    <snapshot-id>
 +
</source>
 +
|}
  
<pre><nowiki>#!bash
+
==== volume ====
glance details [options]
 
  
os list image --details
+
{| class="wikitable"
</nowiki></pre>
+
|-
 +
! OSC Command !! Implemented !! !! Cinder command
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume create
 +
    --size <size>
 +
    [--description <description>]
 +
    [--volume-type <volume-type>]
 +
    [--snapshot-id <snapshot-id>]
 +
    [--source <volid>]
 +
    [--image <image-id>]
 +
    [--availability-zone <availability-zone>]
 +
    [--property <key=value>]
 +
    [--user <user>]          # admin only
 +
    [--project <project>]    # admin only
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder create
 +
    [--snapshot-id <snapshot-id>]
 +
    [--source-volid <source-volid>]
 +
    [--image-id <image-id>]
 +
    [--display-name <display-name>]
 +
    [--display-description <display-description>]
 +
    [--volume-type <volume-type>]
 +
    [--availability-zone <availability-zone>]
 +
    [--metadata <key=value>]
 +
    <size>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume delete
 +
    [--force]
 +
    <volume>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder delete
 +
    <volume-id>
  
 +
cinder force-delete
 +
    <volume-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume list
 +
    [--name <name>]
 +
    [--status <status>]
 +
    [--long]
 +
    [--all-tenants]          # admin only
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder list
 +
    --all-tenants [<0|1>]
 +
    --display-name <display-name>
 +
    --status <status>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume set
 +
    [--name <new-name>]
 +
    [--description <new-description>]
 +
    [--property <key=value>]
 +
    <volume>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder metadata
 +
    <volume-id>
 +
    <action>
 +
    <key=value>
  
<pre><nowiki>#!bash
+
cinder rename
glance member-images [options] <MEMBER>
+
    --display-description <display-description>
 +
    <volume-id>
 +
    <display-name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume show
 +
    <volume>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder show
 +
    <volume-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume unset
 +
    [--property <key=value>]
 +
    <volume>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|}
  
os list image --member <member> [options]
+
==== volume-type ====
</nowiki></pre>
 
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Cinder command
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume type create
 +
    [--property <key=value>]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder type-create
 +
    <type-name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume type delete
 +
    <volume-type>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder type-delete
 +
    <type-id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume type list
 +
    [--long]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder type-list
  
<pre><nowiki>#!bash
+
cinder extra-specs-list
glance show [options] <ID>
+
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume type set
 +
    [--property <key=value>]
 +
    <volume-type>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder type-key
 +
    <type-id>
 +
    <set>
 +
    <key=value>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os volume type unset
 +
    [--property <key>]
 +
    <volume-type>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
cinder type-key
 +
    <type-id>
 +
    <unset>
 +
    <key>
 +
</source>
 +
|}
  
os show image ...
+
== Network ==
</nowiki></pre>
 
  
 +
The Network commands in <code>quantum</code> have been in a bit of flux and are currently out of scope for OpenStackClient.
  
<pre><nowiki>#!bash
+
{| class="wikitable"
glance update [options] <ID> <field1=value1 field2=value2 ...>
+
|-
 +
! Command-line Option !! Environment Variable
 +
|-
 +
| -H HOST|--host=HOST
 +
|-
 +
| -p PORT|--port=PORT
 +
|-
 +
| -s|--ssl
 +
|-
 +
| -v|--verbose
 +
|-
 +
| -f LOGFILE|--logfile=LOGFILE
 +
|-
 +
| -t TOKEN|--token=TOKEN
 +
|-
 +
| --version=VERSION || QUANTUM_VERSION
 +
|}
  
os set image ...
 
</nowiki></pre>
 
  
 
+
=== API v2.0 ===
'''image-member'''
 
 
 
<pre><nowiki>#!bash
 
glance member-add [options] <ID> <MEMBER>
 
 
 
os create image-member ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
glance members-replace [options] <ID> <MEMBER>
 
 
 
os create image-member ... [--clear]
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
glance member-delete [options] <ID> <MEMBER>
 
 
 
os delete image-member ...
 
</nowiki></pre>
 
 
 
 
 
<pre><nowiki>#!bash
 
glance image-members [options] <ID>
 
 
 
os list image-member <image> [options]
 
</nowiki></pre>
 
 
 
 
 
=== Quantum ===
 
  
 
* Verbs:  
 
* Verbs:  
Line 1,496: Line 3,739:
 
** quantum: iface, net, port
 
** quantum: iface, net, port
 
** os: interface, network, port
 
** os: interface, network, port
 
'''quantum'''
 
 
<pre><nowiki>#!csv ,
 
Command-line Option,Environment Variable
 
-H HOST|--host=HOST
 
-p PORT|--port=PORT
 
-s|--ssl
 
-v|--verbose
 
-f LOGFILE|--logfile=LOGFILE
 
-t TOKEN|--token=TOKEN
 
--version=VERSION,QUANTUM_VERSION
 
</nowiki></pre>
 
 
  
 
'''iface'''
 
'''iface'''
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
plug_iface <tenant-id> <net-id> <port-id> <iface-id>
 
plug_iface <tenant-id> <net-id> <port-id> <iface-id>
  
 
add interface <tenant> <network> <port> <interface>
 
add interface <tenant> <network> <port> <interface>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
show_iface <tenant-id> <net-id> <port-id>
 
show_iface <tenant-id> <net-id> <port-id>
  
 
show interface <tenant> <network> <port>
 
show interface <tenant> <network> <port>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
unplug_iface <tenant-id> <net-id> <port-id>
 
unplug_iface <tenant-id> <net-id> <port-id>
  
 
remove interface <tenant> <network> <port>
 
remove interface <tenant> <network> <port>
</nowiki></pre>
+
</source>
  
  
 
'''net'''
 
'''net'''
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
create_net <tenant-id> <net-name>
 
create_net <tenant-id> <net-name>
  
 
create network <tenant> <network-name>
 
create network <tenant> <network-name>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
delete_net <tenant-id> <net-id>
 
delete_net <tenant-id> <net-id>
  
 
delete <tenant> <network>
 
delete <tenant> <network>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
list_nets <tenant-id>
 
list_nets <tenant-id>
  
 
list network <tenant>
 
list network <tenant>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
list_nets_detail <tenant-id>
 
list_nets_detail <tenant-id>
  
 
list network --detail <tenant>
 
list network --detail <tenant>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
show_net <tenant-id> <net-id>
 
show_net <tenant-id> <net-id>
  
 
show network <tenant> <network>
 
show network <tenant> <network>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
show_net_detail <tenant-id> <net-id>
 
show_net_detail <tenant-id> <net-id>
  
 
show network --detail <tenant> <network>
 
show network --detail <tenant> <network>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
update_net <tenant-id> <net-id> <new-name>
 
update_net <tenant-id> <net-id> <new-name>
  
 
set network <tenant> <network> --name <name>
 
set network <tenant> <network> --name <name>
</nowiki></pre>
+
</source>
  
  
 
'''port'''
 
'''port'''
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
create_port <tenant-id> <net-id>
 
create_port <tenant-id> <net-id>
  
 
create port <tenant> <network>
 
create port <tenant> <network>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
delete_port <tenant-id> <net-id> <port-id>
 
delete_port <tenant-id> <net-id> <port-id>
  
 
delete port <tenant> <network> <port>
 
delete port <tenant> <network> <port>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
list_ports <tenant-id> <net-id>
 
list_ports <tenant-id> <net-id>
  
 
list port <tenant> <network>
 
list port <tenant> <network>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
list_ports_detail <tenant-id> <net-id>
 
list_ports_detail <tenant-id> <net-id>
  
 
list port --detail <tenant> <network>
 
list port --detail <tenant> <network>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
show_port <tenant-id> <net-id> <port-id>
 
show_port <tenant-id> <net-id> <port-id>
  
 
show port <tenant> <network> <port>
 
show port <tenant> <network> <port>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
show_port_detail <tenant-id> <net-id> <port-id>
 
show_port_detail <tenant-id> <net-id> <port-id>
  
 
show port --detail <tenant> <network> <port>
 
show port --detail <tenant> <network> <port>
</nowiki></pre>
+
</source>
  
  
<pre><nowiki>#!bash
+
<source lang="bash">
 
update_port <tenant-id> <net-id> <port-id> <params>
 
update_port <tenant-id> <net-id> <port-id> <params>
  
 
set port <tenant> <network> <port> <params>
 
set port <tenant> <network> <port> <params>
</nowiki></pre>
+
</source>
 
 
 
 
== Verbs ==
 
 
 
Describe the kinds of actions each verb performs.  The opposite action is noted in parens if applicable.
 
 
 
* <code><nowiki>add</nowiki></code> (<code><nowiki>remove</nowiki></code>) - add an object to a group of zero or more other objects
 
* <code><nowiki>attach</nowiki></code> (<code><nowiki>detach</nowiki></code>) - connect two objects (is this different from add/remove?)
 
* boot
 
* clear
 
* <code><nowiki>create</nowiki></code> (<code><nowiki>delete</nowiki></code>) - create a new occurrance of the specified object
 
* <code><nowiki>delete</nowiki></code> (<code><nowiki>create</nowiki></code>) - delete a specific occurrance of the specified object
 
* <code><nowiki>detach</nowiki></code> (<code><nowiki>attach</nowiki></code>) - disconnect two objects (is this different from add/remove?)
 
* get
 
* index
 
* <code><nowiki>list</nowiki></code> - display summary information about multiple objects
 
* lock (unlock)
 
* <code><nowiki>migrate</nowiki></code> - move a server to a different host; <code><nowiki>--live</nowiki></code> performs a live migration if possible
 
* <code><nowiki>pause</nowiki></code> (<code><nowiki>unpause</nowiki></code>) - stop a server and leave it in memory
 
* <code><nowiki>reboot</nowiki></code> - forcibly reboot a server
 
* <code><nowiki>rebuild</nowiki></code> - rebuild a server using (most of) the same arguments as in the original <code><nowiki>create</nowiki></code>
 
* <code><nowiki>remove</nowiki></code> (<code><nowiki>add</nowiki></code>) - remove an object from a group of objects
 
* <code><nowiki>rename</nowiki></code> - change the name of the specified object
 
* replace
 
* <code><nowiki>rescue</nowiki></code> (<code><nowiki>unrescue</nowiki></code>) - reboot a server in a special rescue mode allowing access to the original disks
 
* <code><nowiki>resize</nowiki></code> - change a server's flavor
 
* <code><nowiki>resume</nowiki></code> (<code><nowiki>suspend</nowiki></code>) - return a suspended server to running state
 
* <code><nowiki>set</nowiki></code> (<code><nowiki>unset</nowiki></code>) - set an attribute of the object, often called <code><nowiki>metadata</nowiki></code>
 
* <code><nowiki>show</nowiki></code> - display detailed information about the specifiec object
 
* ssh
 
* <code><nowiki>suspend</nowiki></code> (<code><nowiki>resume</nowiki></code>) - stop a server and save to disk freeing memory
 
* update
 
* unlock (lock)
 
* <code><nowiki>unpause</nowiki></code> (<code><nowiki>pause</nowiki></code>) - return a paused server to running state
 
* <code><nowiki>unrescue</nowiki></code> (<code><nowiki>rescue</nowiki></code>) - return a server to normal boot mode
 
* <code><nowiki>unset</nowiki></code> (<code><nowiki>set</nowiki></code>) - remove an attribute of the object
 
* <code><nowiki>update</nowiki></code> - not sure how this is different from <code><nowiki>set</nowiki></code>?
 
  
== Options ==
+
= Options =
  
 
In general, options will be transformed into more UNIX-like usage
 
In general, options will be transformed into more UNIX-like usage

Latest revision as of 02:10, 19 July 2013

Note: this page is being deprecated in favor of a new OpenStackClient Commands page with the correct name.

OpenStackClient Commands

Part of the UnifiedCLI proposal

[Note that the use of the word object here is its generic meaning as the target of an action.]

Command Structure

The OpenStackClient has a consistent and predictable format for all of its commands.

  • The top level command name is openstack
  • Sub-commands take the form:
openstack [<global-options>] <object> <verb> [<second-object>] [<command-local-arguments>]

Note: The command format change was committed on 13May2013. This is the new format.


Command Arguments

  • All long options names shall use '-' as the interpolation character (--like-this)
  • Authentication options conform to a revised version of the original CLIAuth
  • Global arguments generally have a corresponding environment variable that may also be used to set the value. If both are present, the command-line option takes priority. The environment variable names can be derived from the option by dropping the leading '--', converting all embedded dashes ('-') to underscores ('_'), and converting to upper case.
  • Positional arguments trail command options.
  • Some commands require two objects be acted upon, both objects appear in the command and if both are positional arguments they appear in the same order as in the command. In words it can be expressed as "(given) object1 add object2 (to it)"
 * <object-1> <verb> <object-2>
   * group add user
   * access token list   (here, 'access token' is a two-word single object)
   * user list role (needs more thinking)

Other

  • Arguments that normally require an ID in the OS-API may also use the name or other short identifier where reasonable to support
  • Optional machine-parsable format is available with list and show commands. List has an option for CSV-formatted output (see --format, --quote options for a list command) while show has an option for shell-assignment formatted output (see --format option for a show command).

Verbs

The verbs used by the default OpenStack clients are defined below to provide a consistent meaning to each action. Many of them have logical opposite actions. Those verbs with an opposite action are noted in parens if applicable.

  • authorize - authorize a token (used in OAuth)
  • add (remove) - add some object to a container object; the command is built in the order of "container add object" (<container> <object>), the positional arguments appear in the same order
  • attach (detach) - connect two objects (is this different from add/remove? not really, use the same argument order as add)
  • create (delete) - create a new occurrance of the specified object
  • delete (create) - delete a specific occurrance of the specified object
  • detach (attach) - disconnect two objects (is this different from add/remove?)
  • list - display summary information about multiple objects
  • lock (unlock)
  • migrate - move a server to a different host; --live performs a live migration if possible
  • pause (unpause) - stop a server and leave it in memory
  • reboot - forcibly reboot a server
  • rebuild - rebuild a server using (most of) the same arguments as in the original create
  • remove (add) - remove an object from a group of objects
  • rescue (unrescue) - reboot a server in a special rescue mode allowing access to the original disks
  • resize - change a server's flavor
  • resume (suspend) - return a suspended server to running state
  • save - download an object locally
  • set (unset) - set an attribute of the object, often called metadata
  • show - display detailed information about the specifiec object
  • ssh
  • suspend (resume) - stop a server and save to disk freeing memory
  • unlock (lock)
  • unpause (pause) - return a paused server to running state
  • unrescue (rescue) - return a server to normal boot mode
  • unset (set) - remove an attribute of the object


Objects

Note: these need a review to sync up with the revised object names without dashes ('-') in them.


Global Options

The common global options from the default OpenStack clients have been mapped to the set of global options below.

OSC Option Environment Variable Option Environment Variable
--version --version
--help --help
--debug --debug
--quiet
--verbose
--log-file <filename>
--os-auth-url <url> OS_AUTH_URL --os-auth-url <url> OS_AUTH_URL
--os-tenant-name <name> OS_TENANT_NAME --os-tenant-name <name> OS_TENANT_NAME
--os-tenant-id <id> OS_TENANT_ID --os-tenant-id <id> OS_TENANT_ID
--os-username <name> OS_USERNAME --os-username <name> OS_USERNAME
--os-password <pw> OS_PASSWORD --os-password <pw> OS_PASSWORD
--os-region-name <region> OS_REGION_NAME --os-region-name <region> OS_REGION_NAME
--os-cacert <file> OS_CACERT --os-cacert <file> OS_CACERT
--insecure
--os-use-keyring


Common Options

A number of options will appear in many commands and should have the same form in all commands to the extent possible.

Option Description Usual Default
--description describes an object none
--enable Used for setting the enabled state for an object n/a
--disable Used for setting the enabled state for an object n/a


Command Mapping Summary

This is an example mapping of the existing commands from Keystone (Identity), Nova (Compute), Glance (Image) and Cinder (Volume) to the <verb> <object> form for the OpenStackClient cli tool. It reduces both the number of verbs and objects by handling some of the smaller differences with command line options.

Further consolidation could be achieved by additional options or by introduction secondary objects to the syntax. For example, the credentials and x509-cert (and x509-root-cert) objects could be combined:


nova x509-create-cert [<pk-file>] [<x509-cert>] os create credentials --x509 [<pk-file>] [<x509-cert>]
nova credentials os show credentials
nova x509-get-root-cert os show credentials --x509 --root


Cross API

Object names that appear in multiple APIs, like quota, are handled by putting their command handler classes in openstackclient.common. If the number of these becomes large they should be moved into a subdirectory.

credentials

[consider rolling the ec2 creds into this too]

OSC Command Implemented Keystone command
os credentials create
    --x509
    [<private-key-file>]
    [<certificate-file>]
no
nova x509-create-cert
    [<pk-file>]
    [<x509-cert>]
os credentials show
    [--token]
    [--user]
    [--x509 [--root]]
no
nova credentials
    [--wrap <integer>]

nova x509-get-root-cert
    [<filename>]

limits

OSC Command Implemented Keystone command
os limits show
    --absolute [--reserved] | --rate
yes
nova absolute-limits
    [--reserved]

nova rate-limits

cinder absolute-limits

cinder rate-limits

quota

OSC Command Implemented Keystone command
os quota set
    # Compute settings
    [--cores <num-cores>]
    [--fixed-ips <num-fixed-ips>]
    [--floating-ips <num-floating-ips>]
    [--injected-file-size <injected-file-bytes>]
    [--injected-files <num-injected-files>]
    [--instances <num-instances>] 
    [--key-pairs <num-key-pairs>]
    [--properties <num-properties>]
    [--ram <ram-mb>] 

    # Volume settings
    [--gigabytes <new-gigabytes>]
    [--snapshots <new-snapshots>]
    [--volumes <new-volumes>]

    <project>
yes
nova quota-update
    [--instances <instances>] 
    [--cores <cores>]
    [--ram <ram>] 
    [--volumes <volumes>]
    [--gigabytes <gigabytes>]
    [--floating-ips <floating_ips>]
    [--metadata-items <metadata_items>]
    [--injected-files <injected_files>]
    [--injected-file-content-bytes <injected_file_content_bytes>]
    <tenant_id>

cinder quota-update
    [--volumes <volumes>]
    [--snapshots <snapshots>]
    [--gigabytes <gigabytes>]
    <tenant_id>
os quota set
    --class
    # Compute settings
    [--cores <num-cores>]
    [--fixed-ips <num-fixed-ips>]
    [--floating-ips <num-floating-ips>]
    [--injected-file-size <injected-file-bytes>]
    [--injected-files <num-injected-files>]
    [--instances <num-instances>] 
    [--key-pairs <num-key-pairs>]
    [--properties <num-properties>]
    [--ram <ram-mb>] 

    # Volume settings
    [--gigabytes <new-gigabytes>]
    [--snapshots <new-snapshots>]
    [--volumes <new-volumes>]

    <class>
yes
nova quota-class-update 
    [--instances <instances>] 
    [--cores <cores>]
    [--ram <ram>] 
    [--volumes <volumes>]
    [--gigabytes <gigabytes>]
    [--floating-ips <floating_ips>]
    [--metadata-items <metadata_items>]
    [--injected-files <injected_files>]
    [--injected-file-content-bytes <injected_file_content_bytes>]
    <class>

cinder quota-class-update
    [--volumes <volumes>]
    [--snapshots <snapshots>]
    [--gigabytes <gigabytes>]
    <tenant_id>
os quota show
    [--default]
    <project>
yes
nova quota-show
    [--tenant <tenant-id>]

cinder quota-show
    <tenant_id>

nova quota-defaults
    <tenant_id>

cinder quota-defaults
    <tenant_id>
os quota show
    --class
    <class>
yes
nova quota-class-show
    <class>

cinder quota-class-show
    <class>

Identity

OSC Option Environment Variable Keystone Option Environment Variable
--os-identity-api-version <ver> OS_IDENTITY_API_VERSION --os-identity-api-version <ver> OS_IDENTITY_API_VERSION
--os-token <token> OS_TOKEN --os-token <token> OS_SERVICE_TOKEN
--os-url <url> OS_URL --os-endpoint <url> OS_SERVICE_ENDPOINT
--os-cert <file> OS_CERT
--os-key <key-file> OS_KEY
--os-cache OS_CACHE
--force-new-token
--stale-duration <seconds>

API v2.0

catalog

OSC Command Implemented Keystone command
os catalog show
    [--service <service>]
no
keystone catalog
    [--service <service-type>]

ec2 credentials

OSC Command Implemented Keystone command
os ec2 credentials create
    [--project <project>]
    [--user <user>]
yes
keystone ec2-credentials-create
    [--user <user-id>] 
    [--tenant_id <tenant-id>]
os ec2 credentials delete
    [--user <user>]
    <access-key>
yes
keystone ec2-credentials-delete
    [--user <user-id>] 
    --access <access-key>
os ec2 credentials list
    [--user <user>]
yes
keystone ec2-credentials-list
    [--user <user-id>]
os ec2 credentials show
    [--user <user>]
    <access-key>
yes
keystone ec2-credentials-get
    [--user <user-id>] 
    --access <access-key>

endpoint

OSC Command Implemented Keystone command
os endpoint create
    --publicurl <public-url>
    [--adminurl <admin-url>]
    [--internalurl <internal-url>]
    [--region <endpoint-region>]
    <service>
yes
keystone endpoint-create
    [--region <endpoint-region>]
    [--service_id <service-id>]
    [--publicurl <public-url>]
    [--adminurl <admin-url>]
    [--internalurl <internal-url>]
os endpoint delete
    <endpoint-id>
yes
keystone endpoint-delete
    <endpoint-id>
os endpoint list
    [--long]
yes
keystone endpoint-list
os endpoint show
    [--type <endpoint-type>]
    [--attr <endpoint-attribute>] 
    [--value <endpoint-value>]
    [--all]
    <service-type>
yes
keystone endpoint-get
    --service <service-type>
    [--endpoint_type <endpoint-type>]
    [--attr <service-attribute>] 
    [--value <value>]

role

OSC Command Implemented Keystone command
os role create
    <role-name>
yes
keystone role-create --name
    <role-name>
os role delete
    <role>
yes
keystone role-delete
    <role-id>
os role list
yes
keystone role-list
os role show
    <role>
yes
keystone role-get
    <role-id>

service

OSC Command Implemented Keystone command
os service create
    [--type <service-type>]
    [--description <service-description>]
    <service-name>
yes
keystone service-create
    --name <name> 
    --type <type>
    [--description <service-description>]
os service delete
    <service>
yes
keystone service-delete
    <service-id>
os service list
    [--long]
yes
keystone service-list
os service show
    [--catalog]
    <service>
yes
keystone service-get
    <service-id>

tenant

OSC Command Implemented Keystone command
os tenant create
    [--description <description>]
    [--enable | --disable]
    <tenant-name>
yes
keystone tenant-create
    --name <tenant-name>
    [--description <tenant-description>]
    [--enabled <true|false>]
os tenant delete
    <tenant>
yes
keystone tenant-delete
    <tenant>
os tenant list
    [--long]
yes
keystone tenant-list
os tenant set
    [--name <new-tenant-name>]
    [--description <new-tenant-description>]
    [--enable | --disable]
    <tenant>
yes
keystone tenant-update
    [--name <tenant_name>]
    [--description <tenant-description>]
    [--enabled <true|false>]
    <tenant-id>
os tenant show
    <tenant>
yes
keystone tenant-get
    <tenant-id>

token

OSC Command Implemented Keystone command
os token show
    [--width <token-display-width>]
 ??
keystone token-get [--wrap <integer>]

user

OSC Command Implemented Keystone command
os user create
    [--password <user-password>]
    [--email <user-email>]
    [--tenant <tenant>]
    [--enable | --disable]
    <user-name>
yes
keystone user-create
    --name <user-name> 
    [--tenant_id <tenant-id>]
    [--pass <pass>] 
    [--email <email>]
    [--enabled <true|false>]
os user delete
    <user>
yes
keystone user-delete
    <user-id>
os user list
    [--tenant <tenant>]
    [--long]
yes
keystone user-list
    [<tenant-id>]
os user set
    [--name <new-user-name>]
    [--password <user-password>]
    [--email <user-email>]
    [--tenant <tenant>]
    [--enable|--disable]
    <user>
yes
keystone user-password-update
    --pass <password>
    <user-id>
os user show
    <user>
yes
keystone user-get
    <user-id>

user role

OSC Command Implemented Keystone command
os user role add
    [--tenant <tenant>]
    <user>
    <role>
yes
keystone user-role-add
    --user <user-id>
    --role <role-id>
    [--tenant_id <tenant-id>]
os user role list
    [--tenant <tenant>]
    [<user>]
yes
keystone user-role-list
    [--user <user-id>]
    [--tenant_id <tenant-id>]
os user role remove
    [--tenant <tenant>]
    <user>
    <role>
yes
keystone user-role-remove
    --user <user-id>
    --role <role-id>
    [--tenant_id <tenant-id>]

<other>

These keystone commands are not planned for re-implementation in OpenStackClient

keystone bootstrap
        --pass <password>
        [--user-name <user-name>]
        [--role-name <role-name>]
        [--tenant-name <tenant-name>]
keystone discover

API v3

credential

OSC Command Implemented Keystone command
os credential create
    [--project <project>]
    [--type ec2|cert]
    <user>
    <data>
yes
keystone credential-create
    --user_id <user-id>
    --type <credential-type>
    --data <credential-data>
    [--project_id <project-id>]
os credential delete
    <credential-id>
yes
keystone credential-delete
    <credential-id>
os credential list
yes
keystone credential-list
os credential set
    [--user <user>]
    [--type ec2|cert]
    [--data <data>]
    [--project <project>]
    <credential-id>
yes
keystone credential-update
    [--user <user>]
    [--type <type>]
    [--data <data>]
    [--project <project>]
    <credential-id>
os credential show
    <credential-id>
yes
keystone credential-get
    <credential-id>

domain

OSC Command Implemented Keystone command
os domain create
    [--description <domain-description>]
    [--enable | --disable]
    <domain-name>
yes
keystone domain-create
    --name <domain-name>
    [--description <domain-description>]
    [--enabled <true|false>]
    [--private_project_names <true|false>]
    [--private_user_names <true|false>]
os domain delete
    <domain>
yes
keystone domain-delete
    <domain-id>
os domain list
yes
keystone domain-list
os domain set
    [--name <new-domain-name>]
    [--description <new-domain-description>]
    [--enable | --disable]
    <domain>
yes
keystone domain-update
    [--name <domain_name>]
    [--description <domain-description>]
    [--enabled <true|false>]
    [--private_project_names <true|false>]
    [--private_user_names <true|false>]
    <domain-id>
os domain show
    <domain>
yes
keystone domain-get
    <domain-id>

endpoint

OSC Command Implemented Keystone command
os endpoint create
    [--region <endpoint-region>
    [--enable | --disable]
    <service>
    <interface admin|public|internal>
    <url>
yes
keystone endpoint-create 
    [--region <endpoint-region>
    [--enable | --disable]
    <service_id>
    <interface admin|public|internal>
    <url>
os endpoint delete
    <endpoint-id>
yes
os endpoint list
    [--long]
yes
keystone endpoint-list
os endpoint set
    [--interface <endpoint-interface>]
    [--url <endpoint-url>]
    [--service <service-id>]
    [--region <endpoint-region>]
    [--enable | --disable]
    <endpoint>
yes
keystone endpoint-set
    [--interface <endpoint-interface>]
    [--url <endpoint-url>]
    [--service <service-id>]
    [--region <endpoint-region>]
    [--enable | --disable]
    <endpoint>
os endpoint show
    <endpoint>
yes
keystone endpoint-get 
    <endpoint>

group

OSC Command Implemented Keystone command
os group create
    [--domain <domain>]
    [--description <group-description>]
    <group-name>
yes
keystone group-create
    --name <group-name>
    [--domain_id <domain-id>]
    [--description <group-description>]
os group delete
    <group>
yes
keystone group-delete
    <group-id>
os group list
    [--long]
yes
keystone group-list
os group set
    [--name <new-group-name>]
    [--domain <domain>]
    [--description <new-group-description>]
    <group>
yes
keystone group-update
    [--name <group_name>]
    [--domain_id <domain-id>]
    [--description <group-description>]
    <group-id>
os group show
    <group>
yes
keystone group-get
    <group-id>

oauth

OSC Command Implemented Keystone command
os access token create
    --consumer-key <consumer-key>
    --consumer-secret <consumer-secret>
    --request-key <request-key>
    --request-secret <request-secret>
    --verifier <pin>
yes
n/a
look at some alternatives:
os oauth token create
    --consumer-key <consumer-key>
    --consumer-secret <consumer-secret>
    --request-key <request-key>
    --request-secret <request-secret>
    --verifier <pin>
nyet
* makes the token specific to oauth
* add [--oauth-ver X] if versioning for oauth2 is an issue?
os oauth token create
    --access
    --consumer-key <consumer-key>
    --consumer-secret <consumer-secret>
    --request-key <request-key>
    --request-secret <request-secret>
    --verifier <pin>

os oauth token create
    --request
    --consumer-key <consumer-key>
    --roles <roles>
nyet
* collapse 'access token' and 'request token' into 'oauth token'?

policy

OSC Command Implemented Keystone command
os policy create
    [--type <policy-type>]
    --blob-file <blob-file>
yes
keystone policy-create
    --type <policy-type>
    --blob <policy-blob>
os policy delete
    <policy-id>
yes
keystone policy-delete
    <policy-id>
os policy list
    [--include-blob]
yes
keystone policy-list
os policy set
    [--type <policy-type>]
    [--blob-file<blob-file>]
    <policy-id>
yes
keystone policy-update
    [--type <policy-type>]
    [--blob <policy-blob>]
    <policy-id>
os policy show
    <policy-id>
yes
keystone policy-get
    <policy-id>

project

OSC Command Implemented Keystone command
os project create
    [--domain <project-domain>]
    [--description <project-description>]
    [--enable | --disable]
    <project-name>
yes
keystone project-create
    [--domain_id <domain_id>]
    [--description <description>]
    [--enable | --disable]
    <name>
os project delete
    <project>
yes
os project-delete
    <project_id>
os project list
    [--long]
yes
keystone project-list
os project set
    [--name <new-project-name>]
    [--domain <project-domain>]
    [--description <new-project-description>]
    [--enable | --disable]
    <project>
yes
keystone project-set
    [--name <new-project-name>]
    [--domain <project-domain>]
    [--description <new-project-description>]
    [--enable | --disable]
    <project_id>
os project show
    <project>
yes
keystone project-get
    <project_id>

role

OSC Command Implemented Keystone command
os role add
    [--user <user> | --group <group>]
    [--domain <domain> | --project <project>]
    <role>
yes
os role create
    <role-name>
yes
os role delete
    <role>
yes
os role list
yes
os role remove
    [--user <user> | --group <group>]
    [--domain <domain> | --project <project>]
    <role>
yes
os role set
    [--name <new-role-name>]
    <role>
yes
os role show
    <role>
yes

service

OSC Command Implemented Keystone command
os service create
	[--name <name>]
        [--enabled <true|false>]
        <type>
yes
keystone service-create
	[--name <name>]
        [--enabled <true|false>]
        <type>
os service delete
    <service>
yes
keystone service-delete
    <service_id>
os list service
yes
keystone service-list
os service set
    [--type <service-type>]
    [--name <new-name>]
    [--enable | --disable]
    <service>
yes
keystone service-set
    [--type <service-type>]
    [--name <new-name>]
    [--enable | --disable]
    <service>
os service show
    <service>
yes
keystone service-get 
    <service_id>

user

OSC Command Implemented Keystone command
os user create
    [--password <password>] 
    [--project <project>]
    [--email <user-email>]
    [--enable | --disable]
    <name>
yes
keystone user-create
    --name <user-name> 
    [--domain_id <domain-id>]
    [--default_project_id <project-id>]
    [--description <description>]
    [--enabled <true|false>]
    [--password <password>]
os user delete
    <user>
yes
keystone user-delete
    <user-id>
os user list
    [--project <project>]
    [--long]
yes
keystone user-list
os user set
    [--name <new-name>]
    [--password <password>] 
    [--project <project>]
    [--email <user-email>]
    [--enable | --disable]
    <user>
yes
keystone user-update
    --user_id <user-id>
    [--name <user-name>]
    [--domain_id <domain-id>]
    [--default_project_id <project-id>]
    [--description <description>]
    [--enabled <true|false>]
    [--password <password>]
os user show
    <user>
yes
keystone user-get
    <user-id>

Compute

OSC Option Environment Variable Nova Option Environment Variable
--os-auth-system <auth-system> OS_AUTH_SYSTEM
--service-type <type>
--service-name <name> NOVA_SERVICE_NAME
--volume-service-name <name> NOVA_VOLUME_SERVICE_NAME
--endpoint-type <type> NOVA_ENDPOINT_TYPE
--os-compute-api-version <ver> OS_COMPUTE_API_VERSION --os-compute-api-version <ver> OS_COMPUTE_API_VERSION
--bypass-url <bypass-url>


API v2 (1.1)

agent

OSC Command Implemented Nova command
os agent create
    <os>
    <architecture>
    <version>
    <url>
    <md5hash>
    <hypervisor>
yes
os agent delete
    <id>
yes
os agent list 
    [--hypervisor <hypervisor>]
yes
os agent set
    <id>
    <version>
    <url>
    <md5hash>
yes


aggregate

OSC Command Implemented Nova command
os aggregate add host
    <aggregate>
    <host>
yes
nova aggregate-add-host
    <id>
    <host>
os aggregate create
    [--zone <availability-zone>]
    [--property <key=value>]
    <name>
yes
nova aggregate-create
    <name>
    [<availability_zone>]
os aggregate delete
    <aggregate>
yes
nova aggregate-delete
    <id>
os aggregate list
    [--long]
yes
nova aggregate-list
os aggregate remove host
    <aggregate>
    <host>
yes
nova aggregate-remove-host
    <id>
    <host>
os aggregate set
    [--name <new-name>]
    [--zone <availability-zone>]
    [--property <key=value>]
    <aggregate>
yes
nova aggregate-update
    <id>
    <name>
    [<availability_zone>]

nova aggregate-set-metadata
    <id>
    <key=value>
    [<key=value> ...]
os aggregate show
    <aggregate>
yes
nova aggregate-details
    <id>

bash-completion

OSC Command Implemented Nova command

TBD

no
nova bash-completion

cloudpipe

OSC Command Implemented Nova command
os create cloudpipe
    <project>
no
nova cloudpipe-create
    <project>
os list cloudpipe
no
nova cloudpipe-list

console

OSC Command Implemented Nova command
os console log show
    [--lines <num-lines>]
    <server>
yes
nova console-log
    [--length <length>]
    <server>
os console url show
    [--novnc | --xvpvnc | --spice]
    <server>
yes
nova get-vnc-console
    <server>
    <console_type>

credentials

See credentials in the cross API section.

diagnostics

Consider implementing this as: show server --diagnostics <server>

OSC Command Implemented Nova command
os diagnostics show
    <server>
no
nova diagnostics
    <server>

dns

These commands need some attention...an IP shouldn't be required for all record types. They need to be more DNS-y. Zone anyone?

OSC Command Implemented Nova command
os create dns
    [--type <type>]
    <ip>
    <name>
    <domain>
no
nova dns-create
    [--type <type>]
    <ip>
    <name>
    <domain>
os delete dns
    <domain>
    <name>
no
nova dns-delete
    <domain>
    <name>
os list dns
    [--ip <ip>]
    [--name <name>]
    <domain>
no
nova dns-list
    [--ip <ip>]
    [--name <name>]
    <domain>
os create dns-domain
    [--project <project>]
    [--availability-zone <availability-zone>]
    [--public | --private]
    <domain>
no
nova dns-create-private-domain
    [--availability_zone <availability_zone>]
    <domain>

nova dns-create-public-domain
    [--project <project>]
    <domain>
os delete dns-domain
    <domain>
no
nova dns-delete-domain
    <domain>
os list dns-domains
no
nova dns-domains

endpoints

Totally duplicates Identity catalog command

OSC Command Implemented Nova command
os endpoint list
no
nova endpoints

fixed-ip

OSC Command Implemented Nova command
os ip fixed add
    <network>
    <server>
yes
nova add-fixed-ip
    <server>
    <network_id>
os ip fixed remove
    <ip-address>
    <server>
yes
nova remove-fixed-ip
    <server>
    <address>


flavor

OSC Command Implemented Nova command
os flavor create
    [--id <id>]
    [--ram <size-mb>]
    [--disk <size-gb>]
    [--ephemeral-disk <size-gb>]
    [--swap <size-mb>]
    [--vcpus <num-cpu>]
    [--rxtx-factor <factor>]
    [--public | --private]
    <name>
(partial)
default: auto
default: 256M
default: 0G
default: 0G
default: 0G
default: 1
default: 1
default: public
nova flavor-create
    [--ephemeral <ephemeral>] 
    [--swap <swap>]
    [--rxtx-factor <factor>]
    <name>
    <id>
    <ram>
    <disk>
    <vcpus>
os flavor delete
    <flavor>
yes
nova flavor-delete 
    <id>
os flavor list
yes
nova flavor-list
os flavor show
    <flavor>
yes


floating-ip

OSC Command Implemented Nova command
os ip floating add
    <ip-address>
    <server>
yes
nova add-floating-ip
    <server>
    <address>
os ip floating create
    [<pool>]
yes
nova floating-ip-create
    [<floating_ip_pool>]
os ip floating delete
    <ip-address>
yes
nova floating-ip-delete
    <address>
os ip floating list
yes
nova floating-ip-list
os ip floating remove
    <ip-address>
    <server>
yes
nova remove-floating-ip
    <server>
    <address>


floating-ip-pool

OSC Command Implemented Nova command
os ip floating pool list
yes
nova floating-ip-pool-list


host

OSC Command Implemented Nova command
os host list
    [--zone <availability-zone>]
yes
nova host-action
    [--action <action>]
    <hostname>
os host set
    ...
no
nova host-update
    [--status <status>] 
    [--maintenance <maintenance_mode>]
    <hostname>
os host show
    <host>
yes


hypervisor

OSC Command Implemented Nova command
os hypervisor list
    [--matching <hostname>]
yes
os hypervisor show
    <id>
yes


keypair

OSC Command Implemented Nova command
os keypair create
    [--public-key <file>]
    <name>
yes
nova keypair-add
    [--pub_key <pub_key>]
    <name>
os keypair delete
    <name>
yes
nova keypair-delete
    <name>
os keypair list
yes
nova keypair-list
os keypair show
    [--public-key]
    <name>
yes


limits

See limits in the cross API section.

quota

See quota in the cross API section.


resource

OSC Command Implemented Nova command
os show resource
    <hostname>
no
nova describe-resource
    <hostname>

secgroup

OSC Command Implemented Nova command
os secgroup add

(see server add secgroup)
no
nova add-secgroup
    <server>
    <secgroup>
os secgroup create
    [--description <description>]
    <name>
yes
nova secgroup-create
    <name>
    <description>
os secgroup delete
    <group>
yes
nova secgroup-delete
    <secgroup>
os secgroup list
    [--all-projects]
yes
nova secgroup-list
     [--all-tenants [<0|1>]]
os secgroup remove

(see server remove secgroup)
no
nova remove-secgroup
    <server>
    <secgroup>
os secgroup set
    [--name <new-name>]
    [--description [<new-description>]
    <group>
yes
nova secgroup-update
    <secgroup>
    <name>
    <description>
os secgroup show
    <group>
yes
n/a

secgroup-group-rule

OSC Command Implemented Nova command
os secgroup group rule create
    [--proto <protocol>]
    [--port <port>:<port>]
    <source-group>
    <secgroup>
no
nova secgroup-add-group-rule
    [--ip_proto <ip_proto>]
    [--from_port <from_port>]
    [--to_port <to_port>]
    <secgroup>
    <source_group>
os secgroup group rule delete
    [--proto <protocol>]
    [--port <port>:<port>]
    <source-group>
    <secgroup>
no
nova secgroup-delete-group-rule
    [--ip_proto <ip_proto>]
    [--from_port <from_port>]
    [--to_port <to_port>]
    <secgroup>
    <source_group>

secgroup-rule

OSC Command Implemented Nova command
os secgroup rule create
    [--proto <proto>]
    [--src-ip <ip-address>]
    [--dst-port <port-range>]
    <group>
no
nova secgroup-add-rule
    <secgroup>
    <ip_proto>
    <from_port>
    <to_port>
    <cidr>
os secgroup rule delete
    [--proto <proto>]
    [--src-ip <ip-address>]
    [--dst-port <port-range>]
    <group>
no
nova secgroup-delete-rule
    <secgroup>
    <ip_proto>
    <from_port>
    <to_port>
    <cidr>
os secgroup rule list
    <group>
no
nova secgroup-list-rules
    <secgroup>

server

OSC Command Implemented Nova command
os server add secgroup
    <server>
    <group>
no
nova add-secgroup
    <server>
    <secgroup>
os server create
    --image <image>
    --flavor <flavor>
    [--security-group <security-group-list> [...] ]
    [--key-name <key-name>]
    [--meta-data <key=value> [...] ]
    [--file <dest-filename=source-filename>] [...] ]
    [--user-data <user-data>]
    [--availability-zone <zone-name>]
    [--block-device-mapping <dev-name=mapping> [...] ]
    [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr> [...] ]
    [--hint <key=value> [...] ]
    [--config-drive <value>|True ]
    [--min <count>]
    [--max <count>]
    [--wait]
    <server-name>
yes
nova boot
    [--flavor <flavor>]
    [--image <image>]
    [--meta <key=value>]
    [--file <dst-path=src-path>]
    [--key_name <key_name>]
    [--user_data <user-data>]
    [--availability_zone <availability-zone>]
    [--security_groups <security_groups>]
    [--block_device_mapping <dev_name=mapping>]
    [--hint <key=value>]
    [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr>]
    [--config-drive <value>]
    [--poll]
    <name>
os server delete
    <server>
yes
nova delete
    <server>
os server list
    [--reservation-id <reservation-id>] 
    [--ip <ip-regex>]
    [--ip6 <ip6-regex>] 
    [--name <name-regex>]
    [--instance-name <instance-name-regex>] 
    [--status <status>]
    [--flavor <flavor>]
    [--image <image>] 
    [--host <hostname>]
    [--all-tenants]
yes
nova list
    [--reservation_id <reservation_id>] 
    [--ip <ip_regexp>]
    [--ip6 <ip6_regexp>] 
    [--name <name_regexp>]
    [--instance_name <name_regexp>] 
    [--status <status>]
    [--flavor <flavor>] [--image <image>] 
    [--host <hostname>]
    [--all_tenants [<0|1>]]