Jump to: navigation, search

Difference between revisions of "UnifiedCLI/Mapping"

(Fixed code blocks)
(Redirected page to OpenStackClient/Commands)
 
(163 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
#REDIRECT [[OpenStackClient/Commands]]
 +
 +
'''''Note: this page is being deprecated in favor of a new [[OpenStackClient/Commands|OpenStackClient Commands]] page with the correct name.'''''
  
 
__TOC__
 
__TOC__
Line 9: Line 12:
  
 
= Command Structure =
 
= Command Structure =
 +
 +
The OpenStackClient has a consistent and predictable format for all of its commands.
 +
 +
* 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.'''''
 +
 +
 +
== Command Arguments ==
 +
 +
* All long options names shall use '-' as the interpolation character (<code>--like-this</code>)
 +
* Authentication options conform to [[/Authentication| 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 ==
 
== Verbs ==
  
The verbs used by the default [[OpenStack]] clients have been mapped to the set below that attempts to define a consistent meaning to each action.  Many of them have logical opposite actions.  Those verbs with an opposite action is noted in parens if applicable.
+
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.
  
* <code><nowiki>add</nowiki></code> (<code><nowiki>remove</nowiki></code>) - add an object to a container which itself is usually another object; the command is built in the order of "add object1 to object2" (<object1>-<object2>), the positional arguments also appear in that order
+
* <code>authorize</code> - authorize a token (used in OAuth)
* <code><nowiki>attach</nowiki></code> (<code><nowiki>detach</nowiki></code>) - connect two objects (is this different from add/remove?)
+
* <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>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>delete</nowiki></code> (<code><nowiki>create</nowiki></code>) - delete a specific occurrance of the specified object
Line 38: Line 67:
 
* <code><nowiki>unrescue</nowiki></code> (<code><nowiki>rescue</nowiki></code>) - return a server to normal boot mode
 
* <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>unset</nowiki></code> (<code><nowiki>set</nowiki></code>) - remove an attribute of the object
 +
 +
 +
== Objects ==
 +
 +
'''''Note: these need a review to sync up with the revised object names without dashes ('-') in them.'''''
 +
 +
* <code>access-token</code> - [[#Identity|Identity]] - OAuth [[#access-token|access-token]]
 +
* <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]]
 +
  
 
== Global Options ==
 
== Global Options ==
  
 
The common global options from the default [[OpenStack]] clients have been mapped to the set of global options below.
 
The common global options from the default [[OpenStack]] clients have been mapped to the set of global options below.
 
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Option !! Environment Variable !!  !! OSC Option !! Environment Variable
+
! OSC Option !! Environment Variable !!  !! Option !! Environment Variable
 
|-
 
|-
| --version ||  ||   || --version ||  
+
| --version ||  || || --version ||  
 
|-
 
|-
| --help ||  ||   || --help ||  
+
| --help ||  || || --help ||  
 
|-
 
|-
| --debug ||  ||   || --debug ||  
+
| --debug ||  || || --debug ||  
 
|-
 
|-
| ||  ||   || --quiet ||  
+
| --quiet ||  || || ||
 
|-
 
|-
| ||  ||   || --verbose
+
| --verbose ||  || || ||
 
|-
 
|-
| ||  ||  || --log-file <filename> ||  
+
| --log-file <filename> ||  || ||  ||
 
|-
 
|-
| --os-auth-url <url> || OS_AUTH_URL ||  || --os-auth-url || OS_AUTH_URL
+
| --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-name <name> || OS_TENANT_NAME ||  || --os-tenant-name <name> || OS_TENANT_NAME
Line 74: Line 152:
 
| --os-cacert <file> || OS_CACERT ||  || --os-cacert <file> || OS_CACERT
 
| --os-cacert <file> || OS_CACERT ||  || --os-cacert <file> || OS_CACERT
 
|-
 
|-
| --insecure ||  ||   || ||  
+
| ||  || || --insecure ||  
 
|-
 
|-
| ||  ||   || --os-use-keyring ||  
+
| --os-use-keyring ||  || || ||
 
|}
 
|}
 +
  
 
== Common Options ==
 
== Common Options ==
Line 83: Line 162:
 
A number of options will appear in many commands and should have the same form in all commands to the extent possible.
 
A number of options will appear in many commands and should have the same form in all commands to the extent possible.
  
 
+
{| class="wikitable"
<pre><nowiki>#!csv ,
+
|-
Option, Description, Usual Default
+
! Option !! Description !! Usual Default
--description,describes an object, none
+
|-
--enable | --disable, Used for setting the enabled state for an object, n/a
+
| --description || describes an object || none
</nowiki></pre>
+
|-
 +
| --enable || Used for setting the enabled state for an object || n/a
 +
|-
 +
| --disable || Used for setting the enabled state for an object || n/a
 +
|}
  
  
Line 98: Line 181:
  
  
<pre><nowiki>#!csv ,
+
{| class="wikitable"
,
+
|-
nova x509-create-cert [<pk-file>] [<x509-cert>],os create credentials --x509 [<pk-file>] [<x509-cert>]
+
| 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
+
| nova credentials || os show credentials
</nowiki></pre>
+
|-
 +
| nova x509-get-root-cert || os show credentials --x509 --root
 +
|}
  
  
== Identity ==
+
== 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.
  
<pre><nowiki>#!csv ,
+
==== credentials ====
Keystone Option, Environment Variable, , OSC 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_SERVICE_TOKEN , ,--os-token <token>,OS_TOKEN
 
--os-endpoint <url>,OS_SERVICE_ENDPOINT, ,--os-url <url>,OS_URL
 
--os-cert <file>,OS_CERT, ,,
 
--os-key <key-file>,OS_KEY, ,,
 
--os-cache,OS_CACHE, ,,
 
--force-new-token,, ,,
 
--stale-duration <seconds>,, ,,
 
</nowiki></pre>
 
  
 +
''[consider rolling the ec2 creds into this too]''
  
=== API v2.0 ===
+
{| class="wikitable"
 
+
|-
'''token'''
+
! OSC Command !! Implemented !! !! Keystone command
 
+
|-
 +
|
 +
<source lang="bash">
 +
os credentials create
 +
    --x509
 +
    [<private-key-file>]
 +
    [<certificate-file>]
 +
</source>
 +
|| no
 +
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone token-get [--wrap <integer>]
+
nova x509-create-cert
 
+
    [<pk-file>]
os show token [--width <pki-token-display-width>]
+
    [<x509-cert>]
 
</source>
 
</source>
 
+
|-
 
+
|
'''catalog'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone catalog [--service <service-type>]
+
os credentials show
 
+
    [--token]
os show service [--catalog <service-type>]
+
    [--user]
 +
    [--x509 [--root]]
 
</source>
 
</source>
 
+
|| no
 
+
|| ||
'''ec2-credentials'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone ec2-credentials-create [--user <user-id>]
+
nova credentials
                      [--tenant_id <tenant-id>]
+
    [--wrap <integer>]
  
os create ec2-credentials --tenant_id <tenant-id> [--user <user-id>]
+
nova x509-get-root-cert
 
+
    [<filename>]
## are both args really optional?
 
 
</source>
 
</source>
 +
|}
  
 +
==== limits ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone ec2-credentials-delete [--user <user-id>]  
+
os limits show
                      --access <access-key>
+
    --absolute [--reserved] | --rate
 
 
os delete ec2-credentials <access-key>
 
 
 
## what changes if --user is not provided?
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone ec2-credentials-get [--user <user-id>]  
+
nova absolute-limits
                            --access <access-key>
+
    [--reserved]
  
os show ec2-credentials <access-key>
+
nova rate-limits
 +
 
 +
cinder absolute-limits
  
## what changes if --user is not provided?
+
cinder rate-limits
 
</source>
 
</source>
 +
|}
  
 +
==== quota ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone ec2-credentials-list [--user <user-id>]
+
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>]
  
os list ec2-credentials [--user <user-id>]
+
    <project>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''endpoint'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-create [--region <endpoint-region>]
+
nova quota-update
                        [--service_id <service-id>]
+
    [--instances <instances>]
                        [--publicurl <public-url>]
+
    [--cores <cores>]
                        [--adminurl <admin-url>]
+
    [--ram <ram>]
                        [--internalurl <internal-url>]
+
    [--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 create endpoint
+
cinder quota-update
        [--region <endpoint-region>]
+
    [--volumes <volumes>]
        [--publicurl <public-url>]
+
    [--snapshots <snapshots>]
        [--adminurl <admin-url>]
+
    [--gigabytes <gigabytes>]
        [--internalurl <internal-url>]
+
    <tenant_id>
        <service>
 
 
</source>
 
</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>]
  
 +
    # Volume settings
 +
    [--gigabytes <new-gigabytes>]
 +
    [--snapshots <new-snapshots>]
 +
    [--volumes <new-volumes>]
  
 +
    <class>
 +
</source>
 +
|| yes
 +
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-delete <endpoint-id>
+
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>
  
os delete endpoint <endpoint-id>
+
cinder quota-class-update
 +
    [--volumes <volumes>]
 +
    [--snapshots <snapshots>]
 +
    [--gigabytes <gigabytes>]
 +
    <tenant_id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-get --service <service-type>
+
os quota show
                      [--endpoint_type <endpoint-type>]
+
    [--default]
                      [--attr <service-attribute>]
+
    <project>
                      [--value <value>]
 
 
 
os show endpoint
 
        [--type <endpoint-type>]
 
        [--attr <endpoint-attribute>]
 
        [--value <endpoint-value>]
 
        <service>
 
 
 
os show endpoint
 
        [--all]
 
        <service>
 
 
</source>
 
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova quota-show
 +
    [--tenant <tenant-id>]
  
 +
cinder quota-show
 +
    <tenant_id>
  
<source lang="bash">
+
nova quota-defaults
keystone endpoint-list
+
    <tenant_id>
  
os list endpoint [--long]
+
cinder quota-defaults
 +
    <tenant_id>
 
</source>
 
</source>
 
+
|-
 
+
|
'''role'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone role-create --name <role-name>
+
os quota show
 
+
    --class
os create role <role-name>
+
    <class>
 
</source>
 
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova quota-class-show
 +
    <class>
  
 
+
cinder quota-class-show
<source lang="bash">
+
    <class>
keystone role-delete <role-id>
 
 
 
os delete role <role>
 
 
</source>
 
</source>
 +
|}
  
 +
== Identity ==
  
<source lang="bash">
+
{| class="wikitable"
keystone role-get <role-id>
+
|-
 +
! 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> ||
 +
|-
 +
|}
  
os show role <role>
+
=== API v2.0 ===
</source>
 
  
 +
==== catalog ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone role-list
+
os catalog show
 
+
    [--service <service>]
os list role
 
 
</source>
 
</source>
 
+
|| no
 
+
|| ||
'''service'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone service-create --name <name>
+
keystone catalog
                        --type <type>
+
    [--service <service-type>]
                        [--description <service-description>]
 
 
 
os create service
 
        [--type <service-type>]
 
        [--description <service-description>]
 
        <service-name>
 
 
</source>
 
</source>
 +
|}
  
 +
==== ec2 credentials ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone service-delete <service-id>
+
os ec2 credentials create
 
+
    [--project <project>]
os delete service <service>
+
    [--user <user>]
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone service-get <service-id>
+
keystone ec2-credentials-create
 
+
    [--user <user-id>]
os show service <service>
+
    [--tenant_id <tenant-id>]
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone service-list
+
os ec2 credentials delete
 
+
    [--user <user>]
os list service [--long]
+
    <access-key>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''tenant'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone tenant-create --name <tenant-name>
+
keystone ec2-credentials-delete
                      [--description <tenant-description>]
+
    [--user <user-id>]  
                      [--enabled <true|false>]
+
    --access <access-key>
 
 
os create tenant
 
        [--description <tenant-description>]
 
        [--enable | --disable]
 
        <tenant-name>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone tenant-delete <tenant-id>
+
os ec2 credentials list
 
+
    [--user <user>]
os delete tenant <tenant>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone tenant-get <tenant-id>
+
keystone ec2-credentials-list
 
+
    [--user <user-id>]
os show tenant <tenant>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone tenant-list
+
os ec2 credentials show
 
+
    [--user <user>]
os list tenant [--long]
+
    <access-key>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone tenant-update
+
keystone ec2-credentials-get
        [--name <tenant_name>]
+
    [--user <user-id>]  
        [--description <tenant-description>]
+
    --access <access-key>
        [--enabled <true|false>]
 
        <tenant-id>
 
 
 
os set tenant
 
        [--name <new-tenant-name>]
 
        [--description <new-tenant-description>]
 
        [--enable | --disable]
 
        <tenant>
 
 
</source>
 
</source>
 +
|}
  
 +
==== endpoint ====
  
'''user'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone user-create --name <user-name>
+
os endpoint create
                    [--tenant_id <tenant-id>]
+
    --publicurl <public-url>
                    [--pass <pass>]
+
    [--adminurl <admin-url>]
                    [--email <email>]
+
    [--internalurl <internal-url>]
                    [--enabled <true|false>]
+
    [--region <endpoint-region>]
 
+
    <service>
os create user
 
        [--password <user-password>]
 
        [--email <user-email>]
 
        [--tenant <tenant>]
 
        [--enable | --disable]
 
        <user-name>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone user-delete <user-id>
+
keystone endpoint-create
 
+
    [--region <endpoint-region>]
os delete user <user>
+
    [--service_id <service-id>]
 +
    [--publicurl <public-url>]
 +
    [--adminurl <admin-url>]
 +
    [--internalurl <internal-url>]
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone user-get <user-id>
+
os endpoint delete
 
+
    <endpoint-id>
os show user <user>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone user-list [<tenant-id>]
+
keystone endpoint-delete
 
+
    <endpoint-id>
os list user [--tenant <tenant>] [--long]
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone user-password-update --pass <password> <user-id>
+
os endpoint list
 
+
    [--long]
os set user
 
        [--name <new-user-name>]
 
        [--password <user-password>]
 
        [--email <user-email>]
 
        [--tenant <tenant>]
 
        [--enable|--disable]
 
        <user>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''user-role'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone user-role-add --user <user-id>
+
keystone endpoint-list
                      --role <role-id>
 
                      [--tenant_id <tenant-id>]
 
 
 
os add role-user
 
        [--tenant <tenant>]
 
        <role> <user>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone user-role-list [--user <user-id>]  
+
os endpoint show
                  [--tenant_id <tenant-id>]
+
    [--type <endpoint-type>]
 
+
    [--attr <endpoint-attribute>]  
os list role-user
+
    [--value <endpoint-value>]
        [--tenant <tenant>]
+
    [--all]
        [<user>]
+
    <service-type>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone user-role-remove --user <user-id>  
+
keystone endpoint-get
                          --role <role-id>
+
    --service <service-type>
                          [--tenant_id <tenant-id>]
+
    [--endpoint_type <endpoint-type>]
 
+
    [--attr <service-attribute>]  
os remove role-user
+
    [--value <value>]
        [--tenant <tenant>]
 
        <role> <user>
 
 
</source>
 
</source>
 +
|}
  
 +
==== role ====
  
'''<other>'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone bootstrap
+
os role create
        --pass <password>
+
    <role-name>
        [--user-name <user-name>]
 
        [--role-name <role-name>]
 
        [--tenant-name <tenant-name>]
 
 
 
##TBD
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone discover
+
keystone role-create --name
 
+
    <role-name>
##TBD
 
 
</source>
 
</source>
 
+
|-
 
+
|
=== API v3 ===
 
 
 
'''credential'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone credential-create --user_id <user-id>
+
os role delete
                      --type <credential-type>
+
    <role>
                      --data <credential-data>
+
</source>
                      [--project_id <project-id>]
+
|| yes
 
+
|| ||
os create credential
+
<source lang="bash">
        [--project <project>]
+
keystone role-delete
        <user>
+
    <role-id>
        <type>
 
        <data>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone credential-delete <credential-id>
+
os role list
 
 
os delete credential <credential-id>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone credential-get <credential-id>
+
keystone role-list
 
 
os show credential <credential-id>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone credential-list
+
os role show
 
+
    <role>
os list credential [--long]
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone credential-update
+
keystone role-get
        [--user <user>]
+
    <role-id>
        [--type <type>]
 
        [--data <data>]
 
        [--project <project>]
 
        <credential-id>
 
 
 
os set credential
 
        [--user <user>]
 
        [--type <type>]
 
        [--data <data>]
 
        [--project <project>]
 
        <credential-id>
 
 
</source>
 
</source>
 +
|}
  
 +
==== service ====
  
'''domain'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone domain-create --name <domain-name>
+
os service create
                      [--description <domain-description>]
+
    [--type <service-type>]
                      [--enabled <true|false>]
+
    [--description <service-description>]
                      [--private_project_names <true|false>]
+
    <service-name>
                      [--private_user_names <true|false>]
 
 
 
os create domain
 
        [--description <domain-description>]
 
        [--enable | --disable]
 
        [--private_project_names]
 
        [--private_user_names]
 
        <domain-name>
 
 
</source>
 
</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">
 
<source lang="bash">
keystone domain-delete <domain-id>
+
keystone service-delete
 
+
    <service-id>
os delete domain <domain>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone domain-get <domain-id>
+
os service list
 
+
    [--long]
os show domain <domain>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone domain-list
+
keystone service-list
 
 
os list domain [--long]
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone domain-update
+
os service show
        [--name <domain_name>]
+
    [--catalog]
        [--description <domain-description>]
+
    <service>
        [--enabled <true|false>]
 
        [--private_project_names <true|false>]
 
        [--private_user_names <true|false>]
 
        <domain-id>
 
 
 
os set domain
 
        [--name <new-domain-name>]
 
        [--description <new-domain-description>]
 
        [--private_project_names]
 
        [--private_user_names]
 
        [--enable | --disable]
 
        <domain>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''endpoint'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-create --service_id <service-id>
+
keystone service-get
--interface <endpoint-interface>
+
    <service-id>
--url <endpoint-url>
 
[--region <endpoint-region>]
 
                        [--enabled <true|false>]
 
 
 
os create endpoint
 
[--region <endpoint-region>]
 
        [--enabled <true|false>]
 
<service-id>  
 
<endpoint-interface>
 
<endpoint-url>
 
       
 
 
</source>
 
</source>
 +
|}
  
 +
==== tenant ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-delete <endpoint-id>
+
os tenant create
 
+
    [--description <description>]
os delete endpoint <endpoint-id>
+
    [--enable | --disable]
 +
    <tenant-name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-list
+
keystone tenant-create
 
+
    --name <tenant-name>
os list endpoint [--long]
+
    [--description <tenant-description>]
 +
    [--enabled <true|false>]
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone enpoint-get <endpoint-id>
+
os tenant delete
 
+
    <tenant>
os show endpoint <endpoint-id>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone endpoint-update --endpoint_id <endpoint-id>
+
keystone tenant-delete
[--region <endpoint-region>]
+
    <tenant>
        [--enabled <true|false>]
 
[<service-id>]
 
[<endpoint-interface>]
 
[<endpoint-url>]
 
 
 
os update endpoint
 
[--region <endpoint-region>]
 
        [--enabled <true|false>]
 
[--service <service-id>]
 
[--interface <endpoint-interface>]
 
[--url <endpoint-url>]
 
        <endpoint-id>
 
 
</source>
 
</source>
 
+
|-
 
+
|
'''group'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone group-create --name <group-name>
+
os tenant list
                      [--domain_id <domain-id>]
+
    [--long]
                      [--description <group-description>]
 
 
 
os create group
 
        [--domain <domain>]
 
        [--description <group-description>]
 
        <group-name>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone group-delete <group-id>
+
keystone tenant-list
 
 
os delete group <group>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone group-get <group-id>
+
os tenant set
 
+
    [--name <new-tenant-name>]
os show group <group>
+
    [--description <new-tenant-description>]
 +
    [--enable | --disable]
 +
    <tenant>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone group-list
+
keystone tenant-update
 
+
    [--name <tenant_name>]
os list group [--long]
+
    [--description <tenant-description>]
 +
    [--enabled <true|false>]
 +
    <tenant-id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone group-update
+
os tenant show
        [--name <group_name>]
+
    <tenant>
        [--domain_id <domain-id>]
 
        [--description <group-description>]
 
        <group-id>
 
 
 
os set group
 
        [--name <new-group-name>]
 
        [--domain <domain>]
 
        [--description <new-group-description>]
 
        <group>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''policy'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone policy-create --type <policy-type>
+
keystone tenant-get
                      --blob <policy-blob>
+
    <tenant-id>
 
 
os create policy
 
        --type <policy-type>
 
        --blob <policy-blob>
 
 
</source>
 
</source>
 +
|}
  
 +
==== token ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone policy-delete <policy-id>
+
os token show
 
+
    [--width <token-display-width>]
os delete policy <policy-id>
 
 
</source>
 
</source>
 
+
|| ??
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone policy-get <policy-id>
+
keystone token-get [--wrap <integer>]
 
 
os show policy <policy-id>
 
 
</source>
 
</source>
 +
|}
  
 +
==== user ====
  
<source lang="bash">
+
{| class="wikitable"
keystone policy-list
+
|-
 
+
! OSC Command !! Implemented !! !! Keystone command
os list policy [--long]
+
|-
 +
|
 +
<source lang="bash">
 +
os user create
 +
    [--password <user-password>]
 +
    [--email <user-email>]
 +
    [--tenant <tenant>]
 +
    [--enable | --disable]
 +
    <user-name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone policy-update
+
keystone user-create
        [--type <policy-type>]
+
    --name <user-name>  
        [--blob <policy-blob>]
+
    [--tenant_id <tenant-id>]
        <policy-id>
+
    [--pass <pass>]
 
+
    [--email <email>]
os set policy
+
    [--enabled <true|false>]
        [--type <policy-type>]
 
        [--blob <policy-blob>]
 
        <policy-id>
 
 
</source>
 
</source>
 
+
|-
 
+
|
'''project'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone project-create --name <project-name>
+
os user delete
                      [--domain_id <project-domain-id>]
+
    <user>
                      [--description <project-description>]
 
                      [--enabled <true|false>]
 
 
 
os create project
 
        [--domain <project-domain>]
 
        [--description <project-description>]
 
        [--enable | --disable]
 
        <project-name>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone project-delete <project-id>
+
keystone user-delete
 
+
    <user-id>
os delete project <project>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone project-get <project-id>
+
os user list
 
+
    [--tenant <tenant>]
os show project <project>
+
    [--long]
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone project-list
+
keystone user-list
 
+
    [<tenant-id>]
os list project [--long]
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone project-update
+
os user set
        [--name <project_name>]
+
    [--name <new-user-name>]
        [--domain_id <project-domain-id>]
+
    [--password <user-password>]
        [--description <project-description>]
+
    [--email <user-email>]
        [--enabled <true|false>]
+
    [--tenant <tenant>]
        <project-id>
+
    [--enable|--disable]
 
+
    <user>
os set project
 
        [--name <new-project-name>]
 
        [--domain <project-domain>]
 
        [--description <new-project-description>]
 
        [--enable | --disable]
 
        <project>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''role'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone role-create --name <role-name>
+
keystone user-password-update
 
+
    --pass <password>
os create role <role-name>
+
    <user-id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone role-delete <role-id>
+
os user show
 
+
    <user>
os delete role <role>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone role-get <role-id>
+
keystone user-get
 
+
    <user-id>
os show role <role>
 
 
</source>
 
</source>
 +
|}
  
 +
==== user role ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
keystone role-list
+
os user role add
 
+
    [--tenant <tenant>]
os list role
+
    <user>
 +
    <role>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone role-update <role-id>
+
keystone user-role-add
 
+
    --user <user-id>
os update role <role>
+
    --role <role-id>
 +
    [--tenant_id <tenant-id>]
 
</source>
 
</source>
 
+
|-
 
+
|
'''service'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone service-create --type <type>
+
os user role list
[--name <name>]
+
    [--tenant <tenant>]
                        [--enabled <true|false>]
+
    [<user>]
 
+
</source>
os create service
+
|| yes
[--name <name>]
+
|| ||
        [--enabled <true|false>]
+
<source lang="bash">
        <type>
+
keystone user-role-list
 +
    [--user <user-id>]
 +
    [--tenant_id <tenant-id>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os user role remove
 +
    [--tenant <tenant>]
 +
    <user>
 +
    <role>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone service-delete <service-id>
+
keystone user-role-remove
 +
    --user <user-id>
 +
    --role <role-id>
 +
    [--tenant_id <tenant-id>]
 +
</source>
 +
|}
  
os delete service <service>
+
==== <other> ====
</source>
 
  
 +
These keystone commands are not planned for re-implementation in OpenStackClient
  
 
<source lang="bash">
 
<source lang="bash">
keystone service-get <service-id>
+
keystone bootstrap
 
+
        --pass <password>
os show service <service>
+
        [--user-name <user-name>]
 +
        [--role-name <role-name>]
 +
        [--tenant-name <tenant-name>]
 
</source>
 
</source>
 
  
 
<source lang="bash">
 
<source lang="bash">
keystone service-list
+
keystone discover
 
 
os list service [--long]
 
 
</source>
 
</source>
  
 +
=== API v3 ===
  
<source lang="bash">
+
==== credential ====
keystone service-update --service_id <service-id>
 
[--type <type>]
 
[--name <name>]
 
                        [--enabled <true|false>]
 
  
os update service
+
{| class="wikitable"
[--type <type>]
+
|-
[--name <name>]
+
! OSC Command !! Implemented !! !! Keystone command
        [--enabled <true|false>]
+
|-
        <service>
+
|
 +
<source lang="bash">
 +
os credential create
 +
    [--project <project>]
 +
    [--type ec2|cert]
 +
    <user>
 +
    <data>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''user'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
keystone user-create --name <user-name>
+
keystone credential-create
                    [--domain_id <domain-id>]
+
    --user_id <user-id>
                    [--default_project_id <project-id>]
+
    --type <credential-type>
                    [--description <description>]
+
    --data <credential-data>
                    [--enabled <true|false>]
+
    [--project_id <project-id>]
                    [--password <password>]
 
 
 
os create user
 
        [--domain_id <domain-id>]
 
        [--default_project_id <project-id>]
 
        [--description <description>]
 
        [--enabled <true|false>]
 
        [--password <password>]
 
        <user-name>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone user-delete <user-id>
+
os credential delete
 
+
    <credential-id>
os delete user <user>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone user-get <user-id>
+
keystone credential-delete
 
+
    <credential-id>
os show user <user>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
keystone user-list
+
os credential list
 
 
os list user [--long]
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
keystone user-update --user_id <user-id>
+
keystone credential-list
    [--name <user-name>]
 
                    [--domain_id <domain-id>]
 
                    [--default_project_id <project-id>]
 
                    [--description <description>]
 
                    [--enabled <true|false>]
 
                    [--password <password>]
 
 
 
os set user
 
        [--domain_id <domain-id>]
 
        [--default_project_id <project-id>]
 
        [--description <description>]
 
        [--enabled <true|false>]
 
        [--password <password>]
 
        [--user_name <user-name>]
 
        <user>
 
 
</source>
 
</source>
 
+
|-
 
+
|
== Compute ==
 
 
 
 
 
<pre><nowiki>#!csv ,
 
Nova Option, Environment Variable, , OSC 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>,, ,,
 
</nowiki></pre>
 
 
 
 
 
=== API v2 (1.1) ===
 
 
 
'''aggregate'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-create <name> <availability_zone>
+
os credential set
 
+
    [--user <user>]
os create aggregate ...
+
    [--type ec2|cert]
 +
    [--data <data>]
 +
    [--project <project>]
 +
    <credential-id>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-delete <id>
+
keystone credential-update
 
+
    [--user <user>]
os delete aggregate ...
+
    [--type <type>]
 +
    [--data <data>]
 +
    [--project <project>]
 +
    <credential-id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-details <id>
+
os credential show
 
+
    <credential-id>
os show aggregate ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-list
+
keystone credential-get
 
+
    <credential-id>
os list aggregate
 
 
</source>
 
</source>
 +
|}
  
 +
==== domain ====
  
<source lang="bash">
+
{| class="wikitable"
nova aggregate-update <id> <name> [<availability_zone>]
+
|-
 
+
! OSC Command !! Implemented !! !! Keystone command
os set aggregate ...
+
|-
 +
|
 +
<source lang="bash">
 +
os domain create
 +
    [--description <domain-description>]
 +
    [--enable | --disable]
 +
    <domain-name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-set-metadata <id> <key=value> [<key=value> ...]
+
keystone domain-create
 
+
    --name <domain-name>
os set aggregate --metadata ...
+
    [--description <domain-description>]
 +
    [--enabled <true|false>]
 +
    [--private_project_names <true|false>]
 +
    [--private_user_names <true|false>]
 
</source>
 
</source>
 
+
|-
 
+
|
'''aggregate-host'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-add-host <id> <host>
+
os domain delete
 
+
    <domain>
os add aggregate-host ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova aggregate-remove-host <id> <host>
+
keystone domain-delete
 
+
    <domain-id>
os remove aggregate-host ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
'''bash-completion'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova bash-completion
+
os domain list
 
 
os show bash-completion
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''cloudpipe'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova cloudpipe-create <project>
+
keystone domain-list
 
 
os create cloudpipe ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova cloudpipe-list
+
os domain set
 
+
    [--name <new-domain-name>]
os list cloudpipe
+
    [--description <new-domain-description>]
 +
    [--enable | --disable]
 +
    <domain>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''console'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova console-log [--length <length>] <server>
+
keystone domain-update
 
+
    [--name <domain_name>]
os show console ...
+
    [--description <domain-description>]
 +
    [--enabled <true|false>]
 +
    [--private_project_names <true|false>]
 +
    [--private_user_names <true|false>]
 +
    <domain-id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova get-vnc-console <server> <console_type>
+
os domain show
 
+
    <domain>
os show console [--vnc] ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''credentials'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova credentials
+
keystone domain-get
 
+
    <domain-id>
os show credentials
 
 
</source>
 
</source>
 +
|}
  
 +
==== endpoint ====
  
'''diagnostics'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova diagnostics <server>
+
os endpoint create
 
+
    [--region <endpoint-region>
os show diagnostics ...
+
    [--enable | --disable]
 +
    <service>
 +
    <interface admin|public|internal>
 +
    <url>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''dns'''
+
<source lang="bash">
 
+
keystone endpoint-create
 +
    [--region <endpoint-region>
 +
    [--enable | --disable]
 +
    <service_id>
 +
    <interface admin|public|internal>
 +
    <url>
 +
</source>
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova dns-create [--type <type>] <ip> <name> <domain>
+
os endpoint delete
 
+
    <endpoint-id>
os create dns ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova dns-delete <domain> <name>
 
 
os delete dns ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova dns-list [--ip <ip>] [--name <name>] <domain>
+
os endpoint list
 
+
    [--long]
os list dns ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''dns-domain'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova dns-create-private-domain [--availability_zone <availability_zone>]
+
keystone endpoint-list
                              <domain>
 
 
 
os create dns-domain [--private] ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
'''dns-public-domain'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova dns-create-public-domain [--project <project>] <domain>
+
os endpoint set
 
+
    [--interface <endpoint-interface>]
os create dns-domain [--public] ...
+
    [--url <endpoint-url>]
 +
    [--service <service-id>]
 +
    [--region <endpoint-region>]
 +
    [--enable | --disable]
 +
    <endpoint>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova dns-delete-domain <domain>
+
keystone endpoint-set
 
+
    [--interface <endpoint-interface>]
os delete dns-domain ...
+
    [--url <endpoint-url>]
 +
    [--service <service-id>]
 +
    [--region <endpoint-region>]
 +
    [--enable | --disable]
 +
    <endpoint>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova dns-domains
+
os endpoint show
 
+
    <endpoint>
os list dns-domains
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''endpoints'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova endpoints
+
keystone endpoint-get
 
+
    <endpoint>
os list endpoints
 
 
 
# does this overlap with keystone?
 
 
</source>
 
</source>
 +
|}
  
 +
==== group ====
  
'''fixed-ip'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova add-fixed-ip <server> <network_id>
+
os group create
 
+
    [--domain <domain>]
os add fixed-ip ...
+
    [--description <group-description>]
 +
    <group-name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova remove-fixed-ip <server> <address>
+
keystone group-create
 
+
    --name <group-name>
os remove fixed-ip ...
+
    [--domain_id <domain-id>]
 +
    [--description <group-description>]
 
</source>
 
</source>
 
+
|-
 
+
|
'''flavor'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova flavor-create [--ephemeral <ephemeral>]
+
os group delete
                  [--swap <swap>]
+
    <group>
                  [--rxtx-factor <factor>]
 
                  <name> <id> <ram> <disk> <vcpus>
 
 
 
os create flavor ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova flavor-delete <id>
+
keystone group-delete
 
+
    <group-id>
os delete flavor ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova flavor-list
+
os group list
 
+
    [--long]
os list flavor
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''floating-ip'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova add-floating-ip <server> <address>
+
keystone group-list
 
 
os add floating-ip ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova floating-ip-create [<floating_ip_pool>]
+
os group set
 
+
    [--name <new-group-name>]
os create floating-ip ...
+
    [--domain <domain>]
 +
    [--description <new-group-description>]
 +
    <group>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova floating-ip-delete <address>
+
keystone group-update
 
+
    [--name <group_name>]
os delete floating-ip
+
    [--domain_id <domain-id>]
 +
    [--description <group-description>]
 +
    <group-id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova floating-ip-list
+
os group show
 
+
    <group>
os list floating-ip
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova remove-floating-ip <server> <address>
+
keystone group-get
 
+
    <group-id>
os remove floating-ip ...
 
 
</source>
 
</source>
 +
|}
  
 +
==== oauth ====
  
'''floating-ip-pool'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova floating-ip-pool-list
+
os access token create
 
+
    --consumer-key <consumer-key>
os list floating-ip-pool
+
    --consumer-secret <consumer-secret>
 +
    --request-key <request-key>
 +
    --request-secret <request-secret>
 +
    --verifier <pin>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''host'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova host-action [--action <action>] <hostname>
+
n/a
 
 
os ?? host ...
 
 
</source>
 
</source>
 
+
|-
 
+
| look at some alternatives: || || ||
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova host-update [--status <status>]
+
os oauth token create
                [--maintenance <maintenance_mode>]
+
    --consumer-key <consumer-key>
                <hostname>
+
    --consumer-secret <consumer-secret>
 
+
    --request-key <request-key>
os set host ...
+
    --request-secret <request-secret>
 +
    --verifier <pin>
 
</source>
 
</source>
 
+
|| nyet
 
+
|| ||
'''image'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova image-create [--poll] <server> <name>
+
* makes the token specific to oauth
 
+
* add [--oauth-ver X] if versioning for oauth2 is an issue?
os create image ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova image-delete <image>
+
os oauth token create
 +
    --access
 +
    --consumer-key <consumer-key>
 +
    --consumer-secret <consumer-secret>
 +
    --request-key <request-key>
 +
    --request-secret <request-secret>
 +
    --verifier <pin>
  
os delete image ...
+
os oauth token create
 +
    --request
 +
    --consumer-key <consumer-key>
 +
    --roles <roles>
 
</source>
 
</source>
 
+
|| nyet
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova image-list
+
* collapse 'access token' and 'request token' into 'oauth token'?
 
 
os list image
 
 
</source>
 
</source>
 +
|}
  
 +
==== policy ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova image-meta <image> <action> <key=value> [<key=value> ...]
+
os policy create
 
+
    [--type <policy-type>]
os set image ...
+
    --blob-file <blob-file>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova image-show <image>
+
keystone policy-create
 
+
    --type <policy-type>
os show image ...
+
    --blob <policy-blob>
 
</source>
 
</source>
 
+
|-
 
+
|
'''keypair'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova keypair-add [--pub_key <pub_key>] <name>
+
os policy delete
 
+
    <policy-id>
os create keypair ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova keypair-delete <name>
+
keystone policy-delete
 
+
    <policy-id>
os delete keypair
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova keypair-list
+
os policy list
 
+
    [--include-blob]
os list keypair
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''limits'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova absolute-limits
+
keystone policy-list
 
 
os show limits --absolute
 
## is there any other kind?
 
 
</source>
 
</source>
 
+
|-
 
+
|
'''quota'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova quota-defaults <tenant_id>
+
os policy set
nova quota-show <tenant_id>
+
    [--type <policy-type>]
 
+
    [--blob-file<blob-file>]
os show quota <tenant> [--defaults]
+
    <policy-id>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova quota-update [--instances <instances>]
+
keystone policy-update
                  [--cores <cores>]
+
    [--type <policy-type>]
                  [--ram <ram>]  
+
    [--blob <policy-blob>]
                  [--volumes <volumes>]
+
    <policy-id>
                  [--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 ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
'''quota-class'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova quota-class-show <class>
+
os policy show
 
+
    <policy-id>
os show quota-class ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova quota-class-update [--instances <instances>]
+
keystone policy-get
                        [--cores <cores>]
+
    <policy-id>
                        [--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>
 
 
 
os set quota-class ...
 
 
</source>
 
</source>
 +
|}
  
 +
==== project ====
  
'''rate-limits'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova rate-limits
+
os project create
 
+
    [--domain <project-domain>]
os show rate-limits
+
    [--description <project-description>]
 +
    [--enable | --disable]
 +
    <project-name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''resource'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova describe-resource <hostname>
+
keystone project-create
 
+
    [--domain_id <domain_id>]
os show resource ...
+
    [--description <description>]
 +
    [--enable | --disable]
 +
    <name>
 
</source>
 
</source>
 
+
|-
 
+
|
'''secgroup'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-create <name> <description>
+
os project delete
 
+
    <project>
os create secgroup ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-delete <secgroup>
+
os project-delete
 
+
    <project_id>
os delete secgroup ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-list
+
os project list
 
+
    [--long]
os list secgroup
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''secgroup-group-rule'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-add-group-rule [--ip_proto <ip_proto>]
+
keystone project-list
                            [--from_port <from_port>]
 
                            [--to_port <to_port>]
 
                            <secgroup> <source_group>
 
 
 
os create secgroup-group-rule
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-delete-group-rule [--ip_proto <ip_proto>]
+
os project set
                                [--from_port <from_port>]
+
    [--name <new-project-name>]
                                [--to_port <to_port>]
+
    [--domain <project-domain>]
                                <secgroup> <source_group>
+
    [--description <new-project-description>]
 
+
    [--enable | --disable]
os delete secgroup-group-rule ...
+
    <project>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''secgroup-rule'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-add-rule <secgroup> <ip_proto> <from_port> <to_port> <cidr>
+
keystone project-set
 
+
    [--name <new-project-name>]
os create secgroup-rule
+
    [--domain <project-domain>]
 +
    [--description <new-project-description>]
 +
    [--enable | --disable]
 +
    <project_id>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-delete-rule <secgroup> <ip_proto> <from_port> <to_port> <cidr>
+
os project show
 
+
    <project>
os delete secgroup-rule
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova secgroup-list-rules <secgroup>
+
keystone project-get
 
+
    <project_id>
os list secgroup-rule ...
 
 
</source>
 
</source>
 +
|}
  
 +
==== role ====
  
'''server'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova boot [--flavor <flavor>]
+
os role add
          [--image <image>]
+
    [--user <user> | --group <group>]
          [--meta <key=value>]
+
    [--domain <domain> | --project <project>]
          [--file <dst-path=src-path>]
+
    <role>
          [--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-group <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>|True ]
 
          [--min <count>]
 
          [--max <count>]
 
          [--wait]
 
          <server-name>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova delete <server>
 
 
os delete server <server>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
 
 
<source lang="bash">
 
<source lang="bash">
nova list [--reservation_id <reservation_id>]
+
os role create
          [--ip <ip_regexp>]
+
    <role-name>
          [--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-regex>]
 
          [--ip6 <ip6-regex>]
 
          [--name <name-regex>]
 
          [--instance-name <instance-name-regex>]
 
          [--status <status>]
 
          [--flavor <flavor>]
 
          [--image <image>]
 
          [--host <hostname>]
 
          [--all-tenants]
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova lock <server>
 
 
os lock server <server>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova live-migration [--block_migrate]
+
os role delete
                    [--disk_over_commit]
+
    <role>
                    <server> <host>
 
nova migrate [--poll] <server>
 
 
 
os migrate server --live
 
          [--block_migrate]
 
          [--disk_over_commit]
 
          <server>
 
          <host>
 
os migrate server [--wait] <server>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 +
<source lang="bash">
 +
</source>
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova pause <server>
+
os role list
 
 
os pause server <server>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova reboot [--hard] [--poll] <server>
 
 
os reboot server [--hard|--soft] [--wait] <server>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova rebuild [--rebuild_password <rebuild_password>]
+
os role remove
            [--poll]
+
    [--user <user> | --group <group>]
            <server> <image>
+
    [--domain <domain> | --project <project>]
 
+
    <role>
os rebuild server
 
          --image <image>
 
          [--rebuild-password <rebuild-password>]  
 
          [--wait]
 
          <server>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova rename <server> <name>
 
 
os rename server <server> <new-name>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova rescue <server>
+
os role set
 
+
    [--name <new-role-name>]
os rescue server <server>
+
    <role>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova resize [--poll] <server> <flavor>
 
 
os resize server --flavor <flavor> [--wait] <server>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova resize-confirm <server>
+
os role show
 
+
    <role>
os resize server --confirm <server>
 
 
</source>
 
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
</source>
 +
|}
  
 +
==== service ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova resume <server>
+
os service create
 
+
[--name <name>]
os resume server <server>
+
        [--enabled <true|false>]
 +
        <type>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova resize-revert <server>
+
keystone service-create
 
+
[--name <name>]
os resize server --revert <server>
+
        [--enabled <true|false>]
 +
        <type>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova meta <server> <action> <key=value> [<key=value> ...]
+
os service delete
 
+
    <service>
os set server
 
          --meta-data <key=value>
 
          [--meta-data <key=value>] ...
 
          <server>
 
os unset server
 
          --meta-data <key>
 
          [--meta-data <key>] ...
 
          <server>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova root-password <server>
+
keystone service-delete
 
+
    <service_id>
os set server --root-password <server>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova show <server>
+
os list service
 
 
os show server <server>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova ssh [--port PORT] [--private] [--ipv6] [--login <login>] <server>
+
keystone service-list
 
 
os ssh server
 
          [--port PORT]
 
          [--private]
 
          [--ipv6]
 
          [--login <login>]
 
          <server>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova suspend <server>
+
os service set
 
+
    [--type <service-type>]
os suspend server <server>
+
    [--name <new-name>]
 +
    [--enable | --disable]
 +
    <service>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova unlock <server>
+
keystone service-set
 
+
    [--type <service-type>]
os unlock server <server>
+
    [--name <new-name>]
 +
    [--enable | --disable]
 +
    <service>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova unpause <server>
+
os service show
 
+
    <service>
os unpause server <server>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova unrescue <server>
+
keystone service-get
 
+
    <service_id>
os unrescue server <server>
 
 
</source>
 
</source>
 +
|}
  
 +
==== user ====
  
'''usage'''
+
{| class="wikitable"
 
+
|-
 +
! OSC Command !! Implemented !! !! Keystone command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova usage-list [--start <start>] [--end <end>]
+
os user create
 
+
    [--password <password>]
os list usage ...
+
    [--project <project>]
 +
    [--email <user-email>]
 +
    [--enable | --disable]
 +
    <name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''volume'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova volume-attach <server> <volume> <device>
+
keystone user-create
 
+
    --name <user-name>  
os attach volume ...
+
    [--domain_id <domain-id>]
 +
    [--default_project_id <project-id>]
 +
    [--description <description>]
 +
    [--enabled <true|false>]
 +
    [--password <password>]
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-create [--snapshot_id <snapshot_id>]
+
os user delete
                  [--display_name <display_name>]
+
    <user>
                  [--display_description <display_description>]
 
                  [--volume_type <volume_type>]
 
                  <size>
 
 
 
os create volume ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova volume-delete <volume>
+
keystone user-delete
 
+
    <user-id>
os delete volume ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-detach <server> <volume>
+
os user list
 
+
    [--project <project>]
os detach volume ...
+
    [--long]
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova nova volume-list
+
keystone user-list  
 
 
os list volume
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-show <volume>
+
os user set
 
+
    [--name <new-name>]
os show volume ...
+
    [--password <password>]
 +
    [--project <project>]
 +
    [--email <user-email>]
 +
    [--enable | --disable]
 +
    <user>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''volume-snapshot'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
nova volume-snapshot-create [--force <True|False>]
+
keystone user-update
                            [--display_name <display_name>]
+
    --user_id <user-id>
                            [--display_description <display_description>]
+
    [--name <user-name>]
                            <volume_id>
+
    [--domain_id <domain-id>]
 
+
    [--default_project_id <project-id>]
os create volume-snapshot ...
+
    [--description <description>]
 +
    [--enabled <true|false>]
 +
    [--password <password>]
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-snapshot-delete <snapshot_id>
+
os user show
 
+
    <user>
os delete volume-snapshot ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
nova volume-snapshot-list
+
keystone user-get
 +
    <user-id>
 +
</source>
 +
|}
  
os list volume-snapshot
+
== Compute ==
</source>
 
  
  
<source lang="bash">
+
{| class="wikitable"
nova volume-snapshot-show <snapshot>
+
|-
 +
! 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> ||
 +
|}
  
os show volume-snapshot
 
</source>
 
  
 +
=== API v2 (1.1) ===
  
'''volume-type'''
+
==== agent ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-type-create <name>
+
os agent create
 
+
    <os>
os create volume-type ...
+
    <architecture>
 +
    <version>
 +
    <url>
 +
    <md5hash>
 +
    <hypervisor>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-type-delete <id>
+
os agent delete
 
+
    <id>
os delete volume-type ...
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova volume-type-list
+
os agent list  
 
+
    [--hypervisor <hypervisor>]
os list volume-type
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''x509-cert'''
+
|-
 
+
|
<source lang="bash">
+
<source lang="bash">
nova x509-create-cert [<private_key_file>] [<x509_cert>]
+
os agent set
 
+
    <id>
os create x509-cert ...
+
    <version>
 +
    <url>
 +
    <md5hash>
 
</source>
 
</source>
 +
|| yes
 +
|| ||
 +
|}
  
  
'''x509-root-cert'''
+
==== aggregate ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
nova x509-get-root-cert [<filename>]
+
os aggregate add host
 
+
    <aggregate>
os show x509-root-cert ...
+
    <host>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
== Image ==
 
 
 
 
 
<pre><nowiki>#!csv ,
 
Nova Option, Environment Variable, , OSC Option, Environment Variable
 
--force,, ,,
 
--dry-run,, ,,
 
--os-image-url <url>,OS_IMAGE_URL, ,,
 
--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, ,,
 
--cert-file <file>,, ,,
 
--key-file <file>,, ,,
 
--timeout <seconds>,, ,,
 
--no-ssl-compression,, ,,
 
</pre></nowiki>
 
 
 
 
 
=== API v2.0 ===
 
 
 
'''image'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
glance image-create [--id <IMAGE_ID>] [--name <NAME>]
+
nova aggregate-add-host
                                  [--disk-format <CONTAINER_FORMAT>]
+
    <id>
                                  [--container-format <DISK_FORMAT>]
+
    <host>
                                  [--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 ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
glance image-delete <IMAGE_ID>
+
os aggregate create
 
+
    [--zone <availability-zone>]
os delete image ...
+
    [--property <key=value>]
 +
    <name>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
glance image-list
+
nova aggregate-create
 
+
    <name>
os list image ...
+
    [<availability_zone>]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os aggregate delete
 +
    <aggregate>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
glance image-show <IMAGE_ID>
+
nova aggregate-delete
 
+
    <id>
os show image ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
glance member-images [options] <MEMBER>
+
os aggregate list
 
+
    [--long]
os list image --member <member> [options]
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
glance show [options] <ID>
+
nova aggregate-list
 
 
os show image ...
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
glance update [options] <ID> <field1=value1 field2=value2 ...>
+
os aggregate remove host
 
+
    <aggregate>
os set image ...
+
    <host>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
'''image-member'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
glance member-create [--can-share] <IMAGE_ID> <TENANT_ID>
+
nova aggregate-remove-host
 
+
    <id>
os create image-member ...
+
    <host>
 
</source>
 
</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>]
  
 
+
nova aggregate-set-metadata
 +
    <id>
 +
    <key=value>
 +
    [<key=value> ...]
 +
</source>
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
glance member-delete <IMAGE_ID> <TENANT_ID>
+
os aggregate show
 
+
    <aggregate>
os list image-member <image> [options]
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
glance member-delete [options] <ID> <MEMBER>
+
nova aggregate-details
 
+
    <id>
os delete image-member ...
 
 
</source>
 
</source>
 +
|}
  
 +
==== bash-completion ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
TBD
 +
|| no
 +
|| ||
 
<source lang="bash">
 
<source lang="bash">
glance member-list [--image-id <IMAGE_ID>] [--tenant-id <TENANT_ID>]
+
nova bash-completion
 
 
os list image-member ...
 
 
</source>
 
</source>
 +
|}
  
 +
==== cloudpipe ====
  
== Volume ==
+
{| class="wikitable"
 
+
|-
 
+
! OSC Command !! Implemented !! !! Nova command
<pre><nowiki>#!csv ,
+
|-
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>,, ,,
 
</pre></nowiki>
 
 
 
 
 
=== API v1.0 ===
 
 
 
'''credentials'''
 
 
 
 
<source lang="bash">
 
<source lang="bash">
cinder credentials
+
os create cloudpipe
 
+
    <project>
os list credential
 
 
</source>
 
</source>
 
+
|| no
'''limits'''
+
|| ||
 
 
 
<source lang="bash">
 
<source lang="bash">
cinder rate-limits
+
nova cloudpipe-create
 
+
    <project>
os list limit --rate
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
cinder absolute-limits
+
os list cloudpipe
 
 
os list limit --absolute
 
 
</source>
 
</source>
 
+
|| no
'''snapshot'''
+
|| ||
 
 
 
<source lang="bash">
 
<source lang="bash">
cinder snapshot-create
+
nova cloudpipe-list
<volume-id>
 
--force <True|False>
 
--display-name <display-name>
 
--display-description <display-description>
 
 
 
os create snapshot
 
--force
 
--display-name <display-name>
 
--display-description <display-description>
 
<volume-id>
 
 
</source>
 
</source>
 +
|}
  
 +
==== console ====
  
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
cinder snapshot-delete <snapshot-id>
+
os console log show
 
+
    [--lines <num-lines>]
os delete snapshot <snapshot-id>
+
    <server>
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
cinder snapshot-list
+
nova console-log
--all-tenants [<0|1>]
+
    [--length <length>]
--display-name <display-name>
+
    <server>
--status <status>
 
--volume-id <volume-id>
 
 
 
os list snapshot
 
--all-tenants [<0|1>]
 
--display-name <display-name>
 
--status <status>
 
--volume-id <volume-id>
 
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
cinder snapshot-rename
+
os console url show
--display-description <display-description>
+
    [--novnc | --xvpvnc | --spice]
<snapshot-id>
+
    <server>
<display-name>
 
 
 
os update snapshot
 
--display-description <display-description>
 
<snapshot-id>
 
<display-name>
 
 
</source>
 
</source>
 
+
|| yes
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
cinder snapshot-show <snapshot-id>
+
nova get-vnc-console
 
+
    <server>
os show snapshot <snapshot-id>
+
    <console_type>
 
</source>
 
</source>
 +
|}
  
'''type'''
+
==== credentials ====
  
<source lang="bash">
+
See [[#credentials|credentials]] in the [[#Cross_API|cross API section]].
cinder type-create <type-name>
 
 
 
os create type <type-name>
 
</source>
 
  
 +
==== diagnostics ====
  
 +
''Consider implementing this as: show server --diagnostics <server>''
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
cinder type-delete <type-id>
+
os diagnostics show
 
+
    <server>
os delete type <type>
 
 
</source>
 
</source>
 
+
|| no
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
cinder type-list
+
nova diagnostics
 
+
    <server>
os list type
 
 
</source>
 
</source>
 +
|}
  
 +
==== 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?''
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 
<source lang="bash">
 
<source lang="bash">
cinder extra-specs-list
+
os create dns
 
+
    [--type <type>]
os tbd
+
    <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>
 
</source>
 
+
|| no
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
cinder type-key <type-name-or-id> <action (set|unset)> <key=value>
+
nova dns-list
 
+
    [--ip <ip>]
os tbd
+
    [--name <name>]
 +
    <domain>
 
</source>
 
</source>
 
+
|-
'''volume'''
+
|
 
 
 
<source lang="bash">
 
<source lang="bash">
cinder create
+
os create dns-domain
[--snapshot-id <snapshot-id>]
+
    [--project <project>]
[--source-volid <source-volid>]
+
    [--availability-zone <availability-zone>]
[--image-id <image-id>]
+
    [--public | --private]
[--display-name <display-name>]
+
    <domain>
[--display-description <display-description>]
 
[--volume-type <volume-type>]
 
[--availability-zone <availability-zone>]
 
[--metadata [<key=value>]]
 
<size>
 
 
 
os create volume
 
[--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>
 
+
|| no
 
+
|| ||
 
<source lang="bash">
 
<source lang="bash">
cinder delete <volume-id>
+
nova dns-create-private-domain
 +
    [--availability_zone <availability_zone>]
 +
    <domain>
  
os delete volume <volume-id>
+
nova dns-create-public-domain
 +
    [--project <project>]
 +
    <domain>
 
</source>
 
</source>
 
+
|-
 
+
|
 
<source lang="bash">
 
<source lang="bash">
cinder list
+
os delete dns-domain
--all-tenants [<0|1>]
+
    <domain>
--display-name <display-name>
 
--status <status>
 
 
 
os list volume
 
--long
 
 
</source>
 
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova dns-delete-domain
 +
    <domain>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os list dns-domains
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova dns-domains
 +
</source>
 +
|}
 +
 +
==== endpoints ====
  
 
+
''Totally duplicates Identity catalog command''
<source lang="bash">
+
{| class="wikitable"
cinder rename
+
|-
--display-description <display-description>
+
! OSC Command !! Implemented !! !! Nova command
<volume-id>
+
|-
<display-name>
+
|
 
+
<source lang="bash">
os update volume
+
os endpoint list
--display-description <display-description>
+
</source>
<volume-id>
+
|| no
<display-name>
+
|| ||
</source>
+
<source lang="bash">
 
+
nova endpoints
 
+
</source>
<source lang="bash">
+
|}
cinder show <volume-id>
+
 
 
+
==== fixed-ip ====
os show volume <volume-id>
+
 
</source>
+
{| class="wikitable"
 
+
|-
 
+
! OSC Command !! Implemented !! !! Nova command
<source lang="bash">
+
|-
cinder force-delete <volume-id>
+
|
 
+
<source lang="bash">
os tbd
+
os ip fixed add
</source>
+
    <network>
 
+
    <server>
 
+
</source>
<source lang="bash">
+
|| yes
cinder metadata
+
|| ||
<volume-id>
+
<source lang="bash">
<action>
+
nova add-fixed-ip
<key=value>
+
    <server>
 
+
    <network_id>
os tbd
+
</source>
</source>
+
|-
 
+
|
 
+
<source lang="bash">
== Network ==
+
os ip fixed remove
 
+
    <ip-address>
'''quantum'''
+
    <server>
 
+
</source>
<pre><nowiki>#!csv ,
+
|| yes
Command-line Option,Environment Variable
+
|| ||
-H HOST|--host=HOST
+
<source lang="bash">
-p PORT|--port=PORT
+
nova remove-fixed-ip
-s|--ssl
+
    <server>
-v|--verbose
+
    <address>
-f LOGFILE|--logfile=LOGFILE
+
</source>
-t TOKEN|--token=TOKEN
+
|}
--version=VERSION,QUANTUM_VERSION
+
 
</pre></nowiki>
+
 
 +
==== flavor ====
 +
 
 +
{| 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
 +
 
 +
</source>
 +
|| ||
 +
<source lang="bash">
 +
nova flavor-create
 +
    [--ephemeral <ephemeral>]
 +
    [--swap <swap>]
 +
    [--rxtx-factor <factor>]
 +
    <name>
 +
    <id>
 +
    <ram>
 +
    <disk>
 +
    <vcpus>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os flavor delete
 +
    <flavor>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova flavor-delete
 +
    <id>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os flavor list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova flavor-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os flavor show
 +
    <flavor>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
 +
 
 +
 
 +
==== floating-ip ====
 +
 
 +
{| 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
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os ip floating remove
 +
    <ip-address>
 +
    <server>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova remove-floating-ip
 +
    <server>
 +
    <address>
 +
</source>
 +
|}
 +
 
 +
 
 +
==== floating-ip-pool ====
 +
 
 +
 
 +
{| 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
 +
</source>
 +
|}
 +
 
 +
 
 +
==== host ====
 +
 
 +
{| 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
 +
|| ||
 +
|}
 +
 
 +
 
 +
==== hypervisor ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os hypervisor list
 +
    [--matching <hostname>]
 +
</source>
 +
|| yes
 +
|| ||
 +
|-
 +
|
 +
<source lang="bash">
 +
os hypervisor show
 +
    <id>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
 +
 
 +
 
 +
==== keypair ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os keypair create
 +
    [--public-key <file>]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova keypair-add
 +
    [--pub_key <pub_key>]
 +
    <name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os keypair delete
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova keypair-delete
 +
    <name>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os keypair list
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova keypair-list
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os keypair show
 +
    [--public-key]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
|}
 +
 
 +
 
 +
==== limits ====
 +
 
 +
See [[#limits|limits]] in the [[#Cross_API|cross API section]].
 +
 
 +
==== quota ====
 +
 
 +
See [[#quota|quota]] in the [[#Cross_API|cross API section]].
 +
 
 +
 
 +
==== resource ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os show resource
 +
    <hostname>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova describe-resource
 +
    <hostname>
 +
</source>
 +
|}
 +
 
 +
==== secgroup ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Nova command
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup add
 +
 
 +
(see server add secgroup)
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova add-secgroup
 +
    <server>
 +
    <secgroup>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup create
 +
    [--description <description>]
 +
    <name>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-create
 +
    <name>
 +
    <description>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup delete
 +
    <group>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-delete
 +
    <secgroup>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup list
 +
    [--all-projects]
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-list
 +
    [--all-tenants [<0|1>]]
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup remove
 +
 
 +
(see server remove secgroup)
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova remove-secgroup
 +
    <server>
 +
    <secgroup>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup set
 +
    [--name <new-name>]
 +
    [--description [<new-description>]
 +
    <group>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
nova secgroup-update
 +
    <secgroup>
 +
    <name>
 +
    <description>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os secgroup show
 +
    <group>
 +
</source>
 +
|| yes
 +
|| ||
 +
<source lang="bash">
 +
n/a
 +
</source>
 +
|}
 +
 
 +
==== secgroup-group-rule ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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 ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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>
 +
|}
 +
 
 +
====server====
 +
 
 +
{| 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>
 +
 
 +
os server migrate
 +
    [--wait]
 +
    <server>
 +
</source>
 +
|| no
 +
|| ||
 +
<source lang="bash">
 +
nova live-migration
 +
    [--block_migrate]
 +
    [--disk_over_commit]
 +
    <server>
 +
<host>
 +
 
 +
nova migrate
 +
    [--poll]
 +
    <server>
 +
</source>
 +
|-
 +
|
 +
<source lang="bash">
 +
os server pause
 +
    <server>
 +
</source>
 +
|| 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
 +
    --meta-data <key>
 +
    [--meta-data <key>] ...
 +
    <server>
 +
</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 ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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>
 +
|}
 +
 
 +
 
 +
==== volume ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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>
 +
|}
 +
 
 +
 
 +
==== x509-cert ====
 +
 
 +
See [[#credentials|credentials]] in the [[#Cross_API|cross API section]].
 +
 
 +
==== x509-root-cert ====
 +
 
 +
See [[#credentials|credentials]] in the [[#Cross_API|cross API section]].
 +
 
 +
== Image ==
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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 ||
 +
|-
 +
|}
 +
 
 +
 
 +
=== API v1 ===
 +
 
 +
==== image ====
 +
 
 +
{| 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>
 +
|}
 +
 
 +
=== API v2 ===
 +
 
 +
==== image ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! OSC Command !! Implemented !! !! Glance command
 +
|-
 +
|
 +
<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">
 +
</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>
 +
|}
 +
 
 +
 
 +
==== image-member ====
 +
 
 +
Need to discuss the future of these commands with markwash...
 +
 
 +
<source lang="bash">
 +
glance member-create [--can-share] <IMAGE_ID> <TENANT_ID>
 +
 
 +
os create image-member ...
 +
</source>
 +
 
 +
 
 +
<source lang="bash">
 +
glance member-delete <IMAGE_ID> <TENANT_ID>
 +
 
 +
os list image-member <image> [options]
 +
</source>
 +
 
 +
 
 +
<source lang="bash">
 +
glance member-delete [options] <ID> <MEMBER>
 +
 
 +
os delete image-member ...
 +
</source>
 +
 
 +
 
 +
<source lang="bash">
 +
glance member-list [--image-id <IMAGE_ID>] [--tenant-id <TENANT_ID>]
 +
 
 +
os list image-member ...
 +
</source>
 +
 
 +
== Volume ==
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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> ||  ||  ||  ||
 +
|-
 +
|}
 +
 
 +
 
 +
=== API v1.0 ===
 +
 
 +
==== limits ====
 +
 
 +
See [[#limits|limits]] in the [[#Cross_API|cross API section]].
 +
 
 +
==== quota ====
 +
 
 +
See [[#quota|quota]] in the [[#Cross_API|cross API section]].
 +
 
 +
==== snapshot ====
 +
 
 +
{| 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>
 +
|}
 +
 
 +
==== volume ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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>
 +
 
 +
cinder rename
 +
    --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>
 +
|}
 +
 
 +
==== volume-type ====
 +
 
 +
{| 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
 +
 
 +
cinder extra-specs-list
 +
</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>
 +
|}
 +
 
 +
== Network ==
 +
 
 +
The Network commands in <code>quantum</code> have been in a bit of flux and are currently out of scope for OpenStackClient.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! 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
 +
|}
  
  
Line 2,271: Line 3,863:
 
set port <tenant> <network> <port> <params>
 
set port <tenant> <network> <port> <params>
 
</source>
 
</source>
 
  
 
= Options =
 
= Options =

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
    [</