0

私はいくつかの 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 クライアントを使用しているように見えるのかはわかりません。

OS_AUTH_STRATEGY=keystoneまた、キーストーン認証を使用するかどうかに関係なく、同じエラーが発生します。コントローラーのrcファイルで、それが最善の策であると考えました。

最後に、参考までに、インポート中に次の非推奨警告も受け取ります。

/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
4

1 に答える 1

1

コードにいくつかのエラーがあります。API のドキュメントをよく見てください。あなたが呼び出す場合:

nova = Client(2, sess)

次に、キーワード パラメーターsessへのパスを取得していません。sessionあなたがしたい:

nova = Client(2, session=sess)

そして、あなたは電話する必要はありませんnova.authenticate()

于 2015-02-05T22:21:43.387 に答える