2015-02-05 9 views
0

Итак, у меня есть механизм OpenStack, и мне надоело сражаться с панелью инструментов, поэтому я хотел бы написать свой собственный бит автоматизации в python. Тем не менее, я едва успел намочить ноги, и у меня проблемы.ошибка urlsplit во время аутентификации Novaclient

Код:

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' 

Вся информация подключения исходит от переменных окружения на контроллере, так что я знаю, что это должно быть правильным, и я попробовал заменить имя арендатора идентификатором проекта, но до сих пор не радует. Я понятия не имею, почему эта ошибка полностью устранена в urlparse или почему она, похоже, использует клиент 1.1, хотя я указал v2.

Кроме того, я получаю ту же ошибку, независимо от того, использую ли я keystone auth, я полагал, что это был мой лучший выбор с 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 

ответ

1

У вас есть какая-то ошибка в коде. Посмотрите более подробно на api documentation. Если вы звоните:

nova = Client(2, sess) 

Тогда sess не получает пропуска в параметре session ключевого слова. Вы хотите:

nova = Client(2, session=sess) 

И вам не нужно вызывать nova.authenticate().

+0

Это похоже на это. Благодаря! – Sammitch