OpenStack Docs: The novaclient Python API
The novaclient Python API¶
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 keystoneauth session API:
>>> from keystoneauth1 import loading >>> from keystoneauth1 import session >>> from novaclient import client >>> loader = loading.get_plugin_loader('password') >>> auth = loader.load_from_options(auth_url=AUTH_URL, ... username=USERNAME, ... password=PASSWORD, ... project_id=PROJECT_ID) >>> sess = session.Session(auth=auth) >>> nova = client.Client(VERSION, session=sess)
If you have PROJECT_NAME instead of a PROJECT_ID, use the project_name parameter. Similarly, if your cloud uses keystone v3 and you have a DOMAIN_NAME or DOMAIN_ID, provide it as user_domain_(name|id) and if you are using a PROJECT_NAME also provide the domain information as project_domain_(name|id).
novaclient adds ‘python-novaclient’ and its version to the user-agent string that keystoneauth produces. If you are creating an application using novaclient and want to register a name and version in the user-agent string, pass those to the Session:
>>> sess = session.Session( ... auth=auth, app_name'nodepool', app_version'1.2.3')
If you are making a library that consumes novaclient but is not an end-user application, you can append a (name, version) tuple to the session’s additional_user_agent property:
>>> sess = session.Session(auth=auth) >>> sess.additional_user_agent.append(('shade', '1.2.3'))
For more information on this keystoneauth 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: 1GiB server>, <Flavor: 2GiB server>, <Flavor: 4GiB server>, <Flavor: 8GiB server>, <Flavor: 15.5GiB 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:
- novaclient
- novaclient package
- Subpackages
- novaclient.v2 package
- Submodules
- novaclient.v2.agents module
- novaclient.v2.aggregates module
- novaclient.v2.assisted_volume_snapshots module
- novaclient.v2.availability_zones module
- novaclient.v2.cells module
- novaclient.v2.client module
- novaclient.v2.flavor_access module
- novaclient.v2.flavors module
- novaclient.v2.hypervisors module
- novaclient.v2.images module
- novaclient.v2.instance_action module
- novaclient.v2.instance_usage_audit_log module
- novaclient.v2.keypairs module
- novaclient.v2.limits module
- novaclient.v2.list_extensions module
- novaclient.v2.migrations module
- novaclient.v2.networks module
- novaclient.v2.quota_classes module
- novaclient.v2.quotas module
- novaclient.v2.server_external_events module
- novaclient.v2.server_groups module
- novaclient.v2.server_migrations module
- novaclient.v2.servers module
- novaclient.v2.services module
- novaclient.v2.shell module
- novaclient.v2.usage module
- novaclient.v2.versions module
- novaclient.v2.volumes module
- Module contents
- Submodules
- novaclient.v2 package
- Submodules
- Module contents
- Subpackages
- novaclient package