[CI][cli] use env variable to determine KeystoneV3

`rally deployment create --fromenv` tries to guess keystone version
by presence of "USER_DOMAIN_NAME" or "PROJECT_DOMAIN_NAME" environment
variables. But this cariable can be missed. Let's check special variable
for keystone version - OS_IDENTITY_API_VERSION or IDENTITY_API_VERSION.

Also, this patch fixes DeploymentTestCase.test_config functional test to
support keystone v3

Change-Id: Ia75109fb8388b7b02af764c5f93ef5bd04f00676
This commit is contained in:
Andrey Kurilin 2016-12-04 22:45:55 +02:00
parent bd96f85a4e
commit e2c72288ae
3 changed files with 19 additions and 7 deletions

View File

@ -66,12 +66,13 @@ class DeploymentCommands(object):
OS_USERNAME
OS_PASSWORD
OS_AUTH_URL
OS_TENANT_NAME
OS_TENANT_NAME or OS_PROJECT_NAME
OS_ENDPOINT_TYPE or OS_INTERFACE
OS_ENDPOINT
OS_REGION_NAME
OS_CACERT
OS_INSECURE
OS_IDENTITY_API_VERSION
All other deployment engines need more complex configuration
data, so it should be stored in a configuration file.

View File

@ -108,11 +108,16 @@ def get_creds_from_env_vars():
user_domain_name = os.environ.get("OS_USER_DOMAIN_NAME")
project_domain_name = os.environ.get("OS_PROJECT_DOMAIN_NAME")
if user_domain_name or project_domain_name:
# it is Keystone v3 and it has another config schem
identity_api_version = os.environ.get(
"OS_IDENTITY_API_VERSION", os.environ.get("IDENTITY_API_VERSION"))
if (identity_api_version == "3" or
(identity_api_version is None and
(user_domain_name or project_domain_name))):
# it is Keystone v3 and it has another config scheme
creds["admin"]["project_name"] = creds["admin"].pop("tenant_name")
creds["admin"]["user_domain_name"] = user_domain_name or ""
creds["admin"]["project_domain_name"] = project_domain_name or ""
creds["admin"]["user_domain_name"] = user_domain_name or "Default"
project_domain_name = project_domain_name or "Default"
creds["admin"]["project_domain_name"] = project_domain_name
return creds

View File

@ -50,8 +50,14 @@ class DeploymentTestCase(unittest.TestCase):
config["admin"]["username"])
self.assertEqual(utils.TEST_ENV["OS_PASSWORD"],
config["admin"]["password"])
self.assertEqual(utils.TEST_ENV["OS_TENANT_NAME"],
config["admin"]["tenant_name"])
if "project_name" in config["admin"]:
# keystone v3
self.assertEqual(utils.TEST_ENV["OS_TENANT_NAME"],
config["admin"]["project_name"])
else:
# keystone v2
self.assertEqual(utils.TEST_ENV["OS_TENANT_NAME"],
config["admin"]["tenant_name"])
self.assertEqual(utils.TEST_ENV["OS_AUTH_URL"],
config["auth_url"])