python-novaclient/doc/source/api.rst
Andrey Kurilin a96e9d57c5 Restrict direct usage of novaclient.v2.client
A lot of project uses incorrect import of versioned novaclient client obj
(i.e. novaclient.v2.client.Client). It leads to unability to change
interface of such inner classes.

This patch updates docs to include warning note and add warning message to
`novaclient.v2.client.Client` object.

Change-Id: Ifeba391716d3d51d6a75a53cad405e1ec595e27b
Related-Bug: #1493576
2015-09-10 15:54:38 +03:00

2.6 KiB

The novaclient Python API

novaclient

novaclient

Usage

First create a client instance with your credentials:

>>> from novaclient import client
>>> nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)

Here VERSION can be a string or novaclient.api_versions.APIVersion obj. If you prefer string value, you can use 1.1 (deprecated now), 2 or 2.X (where X is a microversion).

Alternatively, you can create a client instance using the keystoneclient session API:

>>> from keystoneclient.auth.identity import v2
>>> from keystoneclient import session
>>> from novaclient import client
>>> auth = v2.Password(auth_url=AUTH_URL,
...                    username=USERNAME,
...                    password=PASSWORD,
...                    tenant_name=PROJECT_ID)
>>> sess = session.Session(auth=auth)
>>> nova = client.Client(VERSION, session=sess)

For more information on this keystoneclient API, see Using Sessions.

It is also possible to use an instance as a context manager in which case there will be a session kept alive for the duration of the with statement:

>>> from novaclient import client
>>> with client.Client(VERSION, USERNAME, PASSWORD,
...                    PROJECT_ID, AUTH_URL) as nova:
...     nova.servers.list()
...     nova.flavors.list()
...

It is also possible to have a permanent (process-long) connection pool, by passing a connection_pool=True:

>>> from novaclient import client
>>> nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID,
...                      AUTH_URL, connection_pool=True)

Then call methods on its managers:

>>> nova.servers.list()
[<Server: buildslave-ubuntu-9.10>]

>>> nova.flavors.list()
[<Flavor: 256 server>,
 <Flavor: 512 server>,
 <Flavor: 1GB server>,
 <Flavor: 2GB server>,
 <Flavor: 4GB server>,
 <Flavor: 8GB server>,
 <Flavor: 15.5GB server>]

>>> fl = nova.flavors.find(ram=512)
>>> nova.servers.create("my-server", flavor=fl)
<Server: my-server>

Warning

Direct initialization of novaclient.v2.client.Client object can cause you to "shoot yourself in the foot". See launchpad bug-report 1493576 for more details.

Reference

For more information, see the reference:

ref/index ref/v2/index