openstack:novaclient Python API不工作

2024-06-16 22:59:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在http://docs.openstack.org/developer/python-novaclient/api.html上找到了一个关于openstack python API的简单教程,但似乎不起作用。当我想跑的时候

nova.servers.list()

或者

^{pr2}$

从python解释器教程中,我得到以下错误:

  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/novaclient/v2/servers.py", line 617, in list
    return self._list("/servers%s%s" % (detail, query_string), "servers")
  File "/usr/lib/python2.7/dist-packages/novaclient/base.py", line 64, in _list
    _resp, body = self.api.client.get(url)
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 440, in get
    return self._cs_request(url, 'GET', **kwargs)
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 399, in _cs_request
    self.authenticate()
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 569, in authenticate
    self._v2_auth(auth_url)
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 634, in _v2_auth
    return self._authenticate(url, body)
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 647, in _authenticate
    **kwargs)
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 392, in _time_request
    resp, body = self.request(url, method, **kwargs)
  File "/usr/lib/python2.7/dist-packages/novaclient/client.py", line 386, in request
    raise exceptions.from_response(resp, body, url, method)
novaclient.exceptions.NotFound: The resource could not be found. (HTTP 404)

我用的是和管理员一样的证书_开放式rc.sh,有效。搞不清是什么问题。在


Tags: inpyselfclienturlrequestlibpackages
3条回答

您将pythonnovaclient用作库,但它从未被设计成那样使用。不幸的是,人们将它用作库。在

试试官方的Python OpenStack SDK。在

pip install openstacksdk

列出服务器或风格的代码。在

^{pr2}$

更多可能有用的信息:

解决了这个问题:不知道为什么,openstack抱怨auth中缺少用户域(不记得确切的消息错误)。在nova中找不到如何通知用户域,但我在keystone上找到了!在

from keystoneclient.auth.identity import v3
from keystoneclient import session
from keystoneclient.v3 import client
auth_url = 'http://10.37.135.89:5000/v3/'
username = 'admin'
user_domain_name = 'Default'
project_name = 'admin'
project_domain_name = 'Default'
password = '123456'
auth = v3.Password(auth_url=auth_url,
                   username=username,
                   password=password,
                   project_id='d5eef1aae54742e787d0653eea57254b',
                   user_domain_name=user_domain_name)
sess = session.Session(auth=auth)
keystone = client.Client(session=sess)
keystone.projects.list()

在那之后,我用keystone在nova进行了认证:

^{pr2}$

我在回答这个问题时使用了一些有用的链接:

http://docs.openstack.org/developer/python-keystoneclient/authentication-plugins.htmlhttp://docs.openstack.org/developer/python-keystoneclient/using-api-v3.htmlhttp://docs.openstack.org/developer/python-novaclient/api.html

根据您的描述,CLI工作正常,但是脚本/解释器失败,因此这肯定是因为初始化novaclient.novaclient以错误的方式。在

使用novaclient.client.client这取决于你使用的版本,但是你的问题没有提供这样的信息,所以目前我不能为你提供一个例子,你可以通过运行命令'nova version'来检查它。在

您可以从python novaclient http://docs.openstack.org/developer/python-novaclient/api.html的开发人员文档中获得帮助

记住,使用关键字参数代替普通参数是一个很好的实践,这意味着

nc = client.Client(version=2, user='admin', password='password',
                   project_id='12345678', auth_url='http://127.0.0.1:5000')

当你试图以错误的方式做某事时,它会暴露问题。在

相关问题 更多 >