python-openstackclient/doc/source/cli/interactive.rst
Doug Hellmann 9599ffe65d reorganize existing documentation according to the new standard layout
Move existing content around based on the doc-migration specification.

Replace :doc: markup with :ref: to have sphinx keep track of where the
files move and generate valid hyperlinks.

Add a few toctrees and index pages for the new directories.

Depends-On: Ia750cb049c0f53a234ea70ce1f2bbbb7a2aa9454
Change-Id: I253ee8f89d3ec40e39310c18bb87ed1d3d5de330
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2017-06-23 11:54:32 +02:00

6.2 KiB

Interactive Mode

OpenStackClient has an interactive mode, similar to the virsh(1) or lvm(8) commands on Linux. This mode is useful for executing a series of commands without having to reload the CLI, or more importantly, without having to re-authenticate to the cloud.

Enter interactive mode by issuing the openstack command with no subcommand. An (openstack) prompt will be displayed. Interactive mode is terminated with exit.

Authentication

Authentication happens exactly as before, using the same global command line options and environment variables, except it only happens once. The credentials are cached and re-used for subsequent commands. This means that to work with multiple clouds interactive mode must be ended so a authentication to the second cloud can occur.

Scripting

Using interactive mode inside scripts sounds counter-intuitive, but the same single-authentication benefit can be achieved by passing OSC commands to the CLI via stdin.

Sample session:

# assume auth credentials are in the environment
$ openstack
(openstack) keypair list
+--------+-------------------------------------------------+
| Name   | Fingerprint                                     |
+--------+-------------------------------------------------+
| bunsen | a5:da:0c:52:e8:52:42:a3:4f:b8:22:62:7b:e4:e8:89 |
| beaker | 45:9c:50:56:7c:fc:3a:b6:b5:60:02:2f:41:fb:a9:4c |
+--------+-------------------------------------------------+
(openstack) image list
+--------------------------------------+----------------+
| ID                                   | Name           |
+--------------------------------------+----------------+
| 78b23835-c800-4d95-9d2a-e4de59a553d8 | OpenWRT r42884 |
| 2e45d43a-7c25-45f1-b012-06ac313e2f6b | Fedora 20      |
| de3a8396-3bae-42de-84bd-f4e398b8c320 | CirrOS         |
+--------------------------------------+----------------+
(openstack) flavor list
+--------------------------------------+----------+--------+--------+-----------+------+-------+-------------+-----------+-------------+
| ID                                   | Name     |    RAM |   Disk | Ephemeral | Swap | VCPUs | RXTX Factor | Is Public | Extra Specs |
+--------------------------------------+----------+--------+--------+-----------+------+-------+-------------+-----------+-------------+
| 12594680-56f7-4da2-8322-7266681b3070 | m1.small |   2048 |     20 |         0 |      |     1 |             | True      |             |
| 9274f903-0cc7-4a95-9124-1968018e355d | m1.tiny  |    512 |      5 |         0 |      |     1 |             | True      |             |
+--------------------------------------+----------+--------+--------+-----------+------+-------+-------------+-----------+-------------+
(openstack) server create --image CirrOS --flavor m1.small --key-name beaker sample-server
+-----------------------------+-------------------------------------------------+
| Field                       | Value                                           |
+-----------------------------+-------------------------------------------------+
| config_drive                |                                                 |
| created                     | 2014-11-19T18:08:41Z                            |
| flavor                      | m1.small (12594680-56f7-4da2-8322-7266681b3070) |
| id                          | 3a9a7f82-e902-4948-9245-52b045c76a1d            |
| image                       | CirrOS (de3a8396-3bae-42de-84bd-f4e398b8c320)   |
| key_name                    | bunsen                                          |
| name                        | sample-server                                   |
| progress                    | 0                                               |
| properties                  |                                                 |
| security_groups             | [{u'name': u'default'}]                         |
| status                      | BUILD                                           |
| tenant_id                   | 53c93c7952594d9ba16bd7072a165ce8                |
| updated                     | 2014-11-19T18:08:42Z                            |
| user_id                     | 1e4eea54c7124688a8092bec6e2dbee6                |
+-----------------------------+-------------------------------------------------+

A similar session can be issued all at once:

$ openstack <<EOF
> keypair list
> flavor show m1.small
> EOF
(openstack) +--------+-------------------------------------------------+
| Name   | Fingerprint                                     |
+--------+-------------------------------------------------+
| bunsen | a5:da:0c:52:e8:52:42:a3:4f:b8:22:62:7b:e4:e8:89 |
| beaker | 45:9c:50:56:7c:fc:3a:b6:b5:60:02:2f:41:fb:a9:4c |
+--------+-------------------------------------------------+
(openstack) +----------------------------+--------------------------------------+
| Field                      | Value                                |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled   | False                                |
| OS-FLV-EXT-DATA:ephemeral  | 0                                    |
| disk                       | 20                                   |
| id                         | 12594680-56f7-4da2-8322-7266681b3070 |
| name                       | m1.small                             |
| os-flavor-access:is_public | True                                 |
| ram                        | 2048                                 |
| swap                       |                                      |
| vcpus                      | 1                                    |
+----------------------------+--------------------------------------+

Limitations

The obvious limitations to Interactive Mode is that it is not a Domain Specific Language (DSL), just a simple command processor. That means there are no variables or flow control.