簡體   English   中英

novaclient身份驗證期間出現urlsplit錯誤

[英]urlsplit error during novaclient authentication

所以我有了一些OpenStack的工具,我討厭與儀表板打架,所以我想用python編寫自己的自動化工具。 但是,我什至沒有弄濕我的腳,並且遇到了麻煩。

碼:

from keystoneclient.auth.identity import v2
from keystoneclient import session
from novaclient.client import Client

auth = v2.Password(auth_url='http://10.0.0.1:5000/v2.0/', username='foo.bla-admin',
    password='hunter2', tenant_name='foo.bla')
sess = session.Session(auth=auth)
nova = Client(2, sess)

print nova.authenticate()

錯誤:

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    print nova.authenticate()
  File "/usr/lib/python2.6/site-packages/novaclient/client.py", line 169, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/lib/python2.6/site-packages/novaclient/v1_1/client.py", line 239, in authenticate
    self.client.authenticate()
  File "/usr/lib/python2.6/site-packages/novaclient/client.py", line 561, in authenticate
    magic_tuple = netutils.urlsplit(self.auth_url)
  File "/usr/lib/python2.6/site-packages/oslo_utils/netutils.py", line 228, in urlsplit
    url, scheme, allow_fragments)
  File "/usr/lib64/python2.6/urlparse.py", line 171, in urlsplit
    i = url.find(':')
AttributeError: 'NoneType' object has no attribute 'find'

所有的連接信息都來自控制器上的環境變量,因此我知道這應該是正確的,並且我嘗試將租戶名稱與項目ID交換,但仍然不滿意。 我不知道為什么它會在urlparse中徹底拋出該錯誤,或​​者即使我指定了v2,為什么它似乎仍在使用1.1客戶端。

另外,無論是否使用梯形失真驗證,都會出現相同的錯誤,我認為這是我最好的選擇,因為控制器的rc文件中的OS_AUTH_STRATEGY=keystone

最后,如果有幫助,在導入期間,我還會收到以下棄用警告:

/usr/lib/python2.6/site-packages/keystoneclient/access.py:20: DeprecationWarning: The oslo namespace package is deprecated. Please use oslo_utils instead.
  from oslo.utils import timeutils
/usr/lib/python2.6/site-packages/keystoneclient/i18n.py:21: DeprecationWarning: The oslo namespace package is deprecated. Please use oslo_i18n instead.
  from oslo import i18n
/usr/lib/python2.6/site-packages/keystoneclient/session.py:20: DeprecationWarning: The oslo namespace package is deprecated. Please use oslo_config instead.
  from oslo.config import cfg
/usr/lib/python2.6/site-packages/keystoneclient/session.py:21: DeprecationWarning: The oslo namespace package is deprecated. Please use oslo_serialization instead.
  from oslo.serialization import jsonutils

您的代碼中有一些錯誤。 請仔細閱讀api文檔 如果您致電:

nova = Client(2, sess)

sess不會傳遞給session關鍵字參數。 你要:

nova = Client(2, session=sess)

而且您不需要調用nova.authenticate()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM