Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openstack使用python SDK v2进行身份验证_Python_Rest_Openstack_Devstack - Fatal编程技术网

Openstack使用python SDK v2进行身份验证

Openstack使用python SDK v2进行身份验证,python,rest,openstack,devstack,Python,Rest,Openstack,Devstack,我在这里是一个OpenStack noob 我尝试使用restapi自动化我的openstack工作。我可以成功地验证我的帐户,并使用以下命令从curl获取令牌: export AUTH_URL="https://my_url:5000/v2.0/tokens" curl -v -X POST $AUTH_URL -d '{"auth":{"passwordCredentials":{"username": "myusername", "password":"myuser_password"},

我在这里是一个OpenStack noob

我尝试使用
restapi
自动化我的
openstack
工作。我可以成功地验证我的帐户,并使用以下命令从
curl
获取令牌:

export AUTH_URL="https://my_url:5000/v2.0/tokens"
curl -v -X POST $AUTH_URL -d '{"auth":{"passwordCredentials":{"username": "myusername", "password":"myuser_password"}, "tenantId":"my_tenant_id"}}' -H 'Content-type: application/json' | python -m json.tool
但是,当我尝试使用
Pyton
,使用此代码时,它给了我一个错误

Traceback (most recent call last):
  File "./test.py", line 10, in <module>
    keystone = ksclient.Client(auth_url=auth_url, username=user_name, password=user_pwd, tenant_name=tenant_name)
  File "/usr/lib/python2.7/site-packages/keystoneclient/v2_0/client.py", line 176, in __init__
    self.authenticate()
  File "/usr/lib/python2.7/site-packages/positional/__init__.py", line 101, in inner
    return wrapped(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/keystoneclient/httpclient.py", line 581, in authenticate
    resp = self.get_raw_token_from_identity_service(**kwargs)
  File "/usr/lib/python2.7/site-packages/keystoneclient/v2_0/client.py", line 220, in get_raw_token_from_identity_service
    _("Authorization Failed: %s") % e)
keystoneauth1.exceptions.auth.AuthorizationFailure: Authorization Failed: The resource could not be found. (HTTP 404) (Request-ID: 
你能看看我的代码,看看为什么python代码不能工作吗


谢谢

您应该只提供
https://my_url:5000/v2.0
作为使用客户端进行身份验证时的路径

有关更多信息,请参阅文档

你也可以试试这样的

from keystoneauth1 import loading
from keystoneauth1 import session
from keystoneclient import client as keystoneclient

auth_url = 'https://my_url:5000'
user = '<user>'
password = '<password>'
tenant = '<tenant>'

loader = loading.get_plugin_loader('password')

keystone_auth = \
    loader.load_from_options(
        auth_url=auth_url,
        username=user,
        password=password,
        user_domain_name=tenant
    )

keystone_session = session.Session(
    auth=keystone_auth,
    verify=False
)

print(keystone_session.get_token())
从keysteauth1导入加载
从keystoneauth1导入会话
从keysteneclient将客户端导入为keysteneclient
auth_url=https://my_url:5000'
用户=“”
密码=“”
租户=“”
加载程序=加载。获取插件加载程序(“密码”)
keystone_auth=\
loader.load\u from\u选项(
auth_url=auth_url,
用户名=用户,
密码=密码,
用户\域名\租户
)
keystone_session=session.session(
auth=keystone\u auth,
验证=错误
)
打印(keystone_会话。获取_令牌())

请记住,Keystone V2 API已被弃用,并已在最新版本的Openstack中删除。如果可能的话,我建议尽快转向V3API。

我遇到了同样的问题。我有和你提到的相同的URL。但它会返回HTTP 401错误(您提出的请求需要身份验证)。我确信用户名/密码是正确的,因为我可以使用curl命令进行身份验证。请帮忙!非常感谢。我从这里复制了一段代码:(更改了我的用户名/密码、url和租户)您正在运行哪个版本的Openstack?还有什么版本的KeysonClient?请确保使用旧版本的KeysonClient,因为v2不再受支持。
from keystoneauth1 import loading
from keystoneauth1 import session
from keystoneclient import client as keystoneclient

auth_url = 'https://my_url:5000'
user = '<user>'
password = '<password>'
tenant = '<tenant>'

loader = loading.get_plugin_loader('password')

keystone_auth = \
    loader.load_from_options(
        auth_url=auth_url,
        username=user,
        password=password,
        user_domain_name=tenant
    )

keystone_session = session.Session(
    auth=keystone_auth,
    verify=False
)

print(keystone_session.get_token())