2015-10-16 30 views
1

我有蟒蛇,openstackclient问题,建立与梯形授权的请求library.When我运行这段代码与梯形授权:如何使用python-OpenStack的客户端API V3

from keystoneclient import session 
from keystoneclient.v3 import client 
from keystoneclient.auth.identity import v3 
password = v3.PasswordMethod(username='idm',password='idm',user_domain_name='idm') 
auth = v3.Auth(auth_url='http://127.0.0.1:5000/v3',auth_methods=[password],project_id='idm') 
sess = session.Session(auth=auth) 
keystone = client.Client(session=sess) 
keystone.users.list() 

即时得到这个错误: keystoneclient .openstack.common.apiclient.exceptions.Unauthorized:您提出的请求需要验证。 (HTTP 401)

但是当我尝试OpenStack的客户端程序:

openstack user list 

它给了我很好的输出。 我在我的.bashrc下一全局变量:

export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v3 
export OS_AUTH_URL=http://127.0.0.1:5000/v3 
export OS_TENANT_NAME=idm 
export OS_USERNAME=idm 
export OS_PASSWORD=idm 
export OS_IDENTITY_API_VERSION=3 
export OS_URL=http://127.0.0.1:35357/v3 

什么能与Python代码的问题? 谢谢!

回答

0

我设法做到这一点是这样的:

from keystoneclient import session 
from keystoneclient.v3 import client 
from keystoneclient.auth.identity import v3 
auth = v3.Password(auth_url='http://127.0.0.1:5000/v3',user_id='idm',password='idm',project_id='2545070293684905b9623095768b019d') 
sess = session.Session(auth=auth) 
keystone = client.Client(session=sess) 
keystone.users.list() 
0

我有同样的问题,但将提出解决办法,我是越来越之后:

keystoneauth1.exceptions.connection.ConnectFailure: Unable to establish connection to http://192.0.2.12:35357/v2.0/users : HTTPConnectionPool(host='192.0.2.12', port=35357): Max retries exceeded with url: /v2.0/users (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',))

注意,我auth_url = 'https://myopenstack.somewhere.org:13000/v3',

事实证明,客户端在默认为'Admin'的界面上发现和使用服务,并且无法访问我。当迫使接口Public它的工作原理:

keystone = client.Client(session=sess, interface='Public')