gpt4 book ai didi

python - 使用 novaclient Python API 获取 Rackspace 上的 block 存储卷列表

转载 作者:行者123 更新时间:2023-12-01 05:13:29 24 4
gpt4 key购买 nike

我正在尝试使用 novaclient Python API 获取我的 Rackspace 帐户上的 block 存储卷列表。这是我正在使用的代码:

from rackspace_auth_openstack.plugin import RackspaceAuthPlugin from rackspace_auth_openstack.plugin import auth_url_us

from novaclient.client import Client nova = Client(version = 2,
username = '******',
project_id = '******',
api_key = '******************************',
region_name = 'DFW',
auth_system = 'rackspace',
auth_plugin = RackspaceAuthPlugin(),
auth_url = auth_url_us())

print nova.servers.list() print nova.volumes.list()

所有库都是使用pip install --upgraderackspace-novaclient安装的,所以我应该使用最新版本的库。下面是上面代码的运行结果:

$ python test.py 
[<Server: svr01>, <Server: svr02>]
Traceback (most recent call last):
File "test.py", line 16, in <module>
print nova.volumes.list()
File "/usr/lib/python2.7/site-packages/novaclient/v1_1/volumes.py", line 95, in list
return self._list("/volumes/detail%s" % query_string, "volumes")
File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 64, in _list
_resp, body = self.api.client.get(url)
File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 283, in get
return self._cs_request(url, 'GET', **kwargs)
File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 260, in _cs_request
**kwargs)
File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 242, in _time_request
resp, body = self.request(url, method, **kwargs)
File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 236, in request
raise exceptions.from_response(resp, body, url, method)
novaclient.exceptions.NotFound: Not found (HTTP 404)

服务器列表 API 调用有效,因此我非常确定我的身份验证正确。 CLI 命令 novavolume-list 工作正常,因此看起来我在代码中遗漏了一些内容。

最佳答案

由于 Cloud Block Storage API 位于不同的端点下,因此您必须指定 service_type

from rackspace_auth_openstack.plugin import RackspaceAuthPlugin, auth_url_us

from novaclient.client import Client
nova = Client(version = 2,
username = '******',
project_id = '******',
api_key = '******************************',
region_name = 'DFW',
auth_system = 'rackspace',
auth_plugin = RackspaceAuthPlugin(),
auth_url = auth_url_us(),
service_type = 'volume') # Right here

print nova.volumes.list()

关于python - 使用 novaclient Python API 获取 Rackspace 上的 block 存储卷列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com