使用 libcloud 时的 Openstack 身份验证问题
Openstack Authentication issue when using libcloud
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
import libcloud.security
auth_usr = 'ryan@ccc.sss.com'
auth_pass = '*********'
auth_url = 'https://ccc.sss.com:5000/v2.0'
project_name = 'POC'
region_name = ''
libcloud.security.VERIFY_SSL_CERT = False
provider = get_driver(Provider.OPENSTACK)
conn = provider(auth_usr,
auth_pass,
ex_force_auth_url=auth_url,
ex_force_auth_version='2.0_password',
ex_tenant_name=project_name,
ex_force_service_region=region_name)
images = conn.list_images()
for image in images:
print(image)
导致以下错误:
BaseHTTPError: {"error": {"message": "get_version_v2() got an unexpected keyword argument 'auth'", "code": 400, "title": "Bad Request"}}
我还尝试从 url 中删除 v2.0 并添加 /tokens。两者都不起作用,它们会导致 "cannot find endpoint" 错误。
我正在使用 vmware 集成 OpenStack。
好的,在我的例子中,您需要将区域设置为 "nova" 才能正常工作。
ex_force_service_region="nova"
我不得不通过 pyDev 中的代码进行跟踪,以确定是区域不匹配才是问题所在。
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
import libcloud.security
auth_usr = 'ryan@ccc.sss.com'
auth_pass = '*********'
auth_url = 'https://ccc.sss.com:5000/v2.0'
project_name = 'POC'
region_name = ''
libcloud.security.VERIFY_SSL_CERT = False
provider = get_driver(Provider.OPENSTACK)
conn = provider(auth_usr,
auth_pass,
ex_force_auth_url=auth_url,
ex_force_auth_version='2.0_password',
ex_tenant_name=project_name,
ex_force_service_region=region_name)
images = conn.list_images()
for image in images:
print(image)
导致以下错误:
BaseHTTPError: {"error": {"message": "get_version_v2() got an unexpected keyword argument 'auth'", "code": 400, "title": "Bad Request"}}
我还尝试从 url 中删除 v2.0 并添加 /tokens。两者都不起作用,它们会导致 "cannot find endpoint" 错误。
我正在使用 vmware 集成 OpenStack。
好的,在我的例子中,您需要将区域设置为 "nova" 才能正常工作。
ex_force_service_region="nova"
我不得不通过 pyDev 中的代码进行跟踪,以确定是区域不匹配才是问题所在。