The novaclient Python API¶
用法¶
首先使用您的凭据创建一个客户端实例
>>> from novaclient import client
>>> nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)
这里 VERSION 可以是一个字符串或 novaclient.api_versions.APIVersion 对象。如果您更喜欢字符串值,可以使用 1.1 (现在已弃用), 2 或 2.X (其中 X 是一个微版本)。
或者,您可以使用 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)
如果您有 PROJECT_NAME 而不是 PROJECT_ID,请使用 project_name 参数。 同样,如果您的云使用 keystone v3 并且您有 DOMAIN_NAME 或 DOMAIN_ID,请将其作为 user_domain_(name|id) 提供,如果您正在使用 PROJECT_NAME,还应提供域信息作为 project_domain_(name|id)。
novaclient 将 ‘python-novaclient’ 及其版本添加到 keystoneauth 生成的用户代理字符串中。如果您正在使用 novaclient 创建一个应用程序,并希望在用户代理字符串中注册一个名称和版本,请将其传递给 Session
>>> sess = session.Session(
... auth=auth, app_name'nodepool', app_version'1.2.3')
如果您正在创建一个使用 novaclient 但不是最终用户应用程序的库,您可以将 (名称, 版本) 元组附加到 session 的 additional_user_agent 属性
>>> sess = session.Session(auth=auth)
>>> sess.additional_user_agent.append(('shade', '1.2.3'))
有关此 keystoneauth API 的更多信息,请参阅 使用 Sessions。
也可以使用一个实例作为上下文管理器,在这种情况下,会话将在 with 语句的持续时间内保持活动状态
>>> from novaclient import client
>>> with client.Client(VERSION, USERNAME, PASSWORD,
... PROJECT_ID, AUTH_URL) as nova:
... nova.servers.list()
... nova.flavors.list()
...
也可以通过传递 connection_pool=True 来拥有一个永久的(进程长)连接池
>>> from novaclient import client
>>> nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID,
... AUTH_URL, connection_pool=True)
然后在其管理器上调用方法
>>> 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>
警告
直接初始化 novaclient.v2.client.Client 对象可能会导致您“打自己的脚”。有关更多详细信息,请参阅 launchpad bug-report 1493576。
参考¶
请参阅 模块参考。