
There are a few things currently wrong with bash-completion as it stands now: 1) IDs are currently required to be UUIDs. This is an arbitrary limitation and doesn't make sense for certain kinds of objects, like `Flavors` where a valid ID could be `performance-16gb`. 2) The code is spread out between Oslo's `Resource` and Novaclient's `Manager` class. This makes it difficult to improve the code because it requires changes to two separate projects. We should centralize the code in Novaclient until the API is stable, then import the code into Oslo in its entirety, not partially like it is now. 3) The completion code is handled by the `Manager` of which there is one per Resource-type. In the interest of centralizing this functionality, we should create a `CompletionCache` class and hang it off of `Client` of which there is one-per-session. 4) The completion-code currently runs by default even in headless mode (e.g. novaclient without the shell). It'd be much more efficient to only write to the completion cache if we're accessing the `Client` from the novaclient shell. We can make this an option to support third-party CLI clients that want to use the completion-cache as well. NOTE: * The corresponding Oslo patch is here: https://review.openstack.org/#/c/101376/ * This patch was tested in multithreaded mode to prevent any regression from: https://bugs.launchpad.net/python-novaclient/+bug/1213958. Change-Id: Idada83de103358974b739f81d4f392574f9e1237 Closes-Bug: 1332270
Python bindings to the OpenStack Nova API
This is a client for the OpenStack Nova API. There's a Python API
(the novaclient
module), and a command-line script
(nova
). Each implements 100% of the OpenStack Nova API.
See the OpenStack CLI
guide for information on how to use the nova
command-line tool. You may also want to look at the OpenStack API
documentation.
The project is hosted on Launchpad, where bugs can be filed. The code is hosted on Github. Patches must be submitted using Gerrit, not Github pull requests.
python-novaclient is licensed under the Apache License like the rest of OpenStack.
Contents:
Command-line API
Installing this package gets you a shell command, nova
,
that you can use to interact with any OpenStack cloud.
You'll need to provide your OpenStack username and password. You can
do this with the --os-username
, --os-password
and --os-tenant-name
params, but it's easier to just set
them as environment variables:
export OS_USERNAME=openstack
export OS_PASSWORD=yadayada
export OS_TENANT_NAME=myproject
You will also need to define the authentication url with
--os-auth-url
and the version of the API with
--os-compute-api-version
. Or set them as an environment
variables as well:
export OS_AUTH_URL=http://example.com:8774/v1.1/
export OS_COMPUTE_API_VERSION=1.1
If you are using Keystone, you need to set the OS_AUTH_URL to the keystone endpoint:
export OS_AUTH_URL=http://example.com:5000/v2.0/
Since Keystone can return multiple regions in the Service Catalog,
you can specify the one you want with --os-region-name
(or
export OS_REGION_NAME
). It defaults to the first in the
list returned.
You'll find complete documentation on the shell by running
nova help
Python API
There's also a complete Python API, but it has not yet been documented.
Quick-start using keystone:
# use v2.0 auth with http://example.com:5000/v2.0/")
>>> from novaclient.v1_1 import client
>>> nt = client.Client(USER, PASS, TENANT, AUTH_URL, service_type="compute")
>>> nt.flavors.list()
[...]
>>> nt.servers.list()
[...]
>>> nt.keypairs.list()
[...]