Support OS_PROJECT_NAME as well as OS_TENANT_NAME in the CLI

OS_PROJECT_NAME is now preferred throughout most if not all
of OpenStack projects at this point. OS_TENANT_NAME support remains
for backward compatibility.

Change-Id: I06d4af6538052ba3f63bb9f69998b1ac817f9ef5
This commit is contained in:
Travis Truman 2016-03-28 15:19:19 -04:00
parent 2506e50c66
commit bfa828f30b
2 changed files with 34 additions and 2 deletions

View File

@ -85,7 +85,7 @@ with_default_verification_id = default_from_global(
def get_creds_from_env_vars():
required_env_vars = ["OS_AUTH_URL", "OS_USERNAME",
"OS_PASSWORD", "OS_TENANT_NAME"]
"OS_PASSWORD"]
missing_env_vars = [v for v in required_env_vars if v not in os.environ]
if missing_env_vars:
msg = ("The following environment variables are "
@ -97,7 +97,7 @@ def get_creds_from_env_vars():
"admin": {
"username": os.environ["OS_USERNAME"],
"password": os.environ["OS_PASSWORD"],
"tenant_name": os.environ["OS_TENANT_NAME"]
"tenant_name": get_project_name_from_env()
},
"endpoint": os.environ.get("OS_ENDPOINT"),
"region_name": os.environ.get("OS_REGION_NAME", ""),
@ -107,3 +107,14 @@ def get_creds_from_env_vars():
}
return creds
def get_project_name_from_env():
tenant_name = os.environ.get("OS_PROJECT_NAME",
os.environ.get("OS_TENANT_NAME"))
if tenant_name is None:
raise exceptions.ValidationError("Either the OS_PROJECT_NAME or "
"OS_TENANT_NAME environment variable "
"is required, but neither is set.")
return tenant_name

View File

@ -139,3 +139,24 @@ class EnvUtilsTestCase(test.TestCase):
del os.environ["OS_USERNAME"]
self.assertRaises(exceptions.ValidationError,
envutils.get_creds_from_env_vars)
@mock.patch.dict(os.environ, {"OS_TENANT_NAME": "fake_tenant_name"})
def test_get_project_name_from_env_when_tenant_name(self):
project_name = envutils.get_project_name_from_env()
self.assertEqual("fake_tenant_name", project_name)
@mock.patch.dict(os.environ, {"OS_PROJECT_NAME": "fake_project_name"})
def test_get_project_name_from_env_when_project_name(self):
project_name = envutils.get_project_name_from_env()
self.assertEqual("fake_project_name", project_name)
@mock.patch.dict(os.environ, {"OS_TENANT_NAME": "fake_tenant_name",
"OS_PROJECT_NAME": "fake_project_name"})
def test_get_project_name_from_env_when_both(self):
project_name = envutils.get_project_name_from_env()
self.assertEqual("fake_project_name", project_name)
@mock.patch.dict(os.environ, values={}, clear=True)
def test_get_project_name_from_env_when_neither(self):
self.assertRaises(exceptions.ValidationError,
envutils.get_project_name_from_env)