![](/img/trans.png)
[英]Openstack Python API novaclient - SecurityGroup Rule list with description
[英]Getting a list of block storage volumes at Rackspace using novaclient Python API
我正在嘗試使用novaclient Python API獲取我在Rackspace帳戶上擁有的塊存儲卷的列表。 這是我正在使用的代碼:
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 --upgrade rackspace-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命令nova volume-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()
我已經對此進行了測試,並確認novaclient在使用其CLI和使用Python模塊時的行為有所不同。 我已經將這個問題轉發給了novaclient上的Rackspace團隊。 我希望他們中的一個能夠對此有所了解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.