summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-11-19 22:59:39 +0000
committerGerrit Code Review <review@openstack.org>2015-11-19 22:59:39 +0000
commit88180f9771a5092116a6f06df6dd502e0bfe3ab7 (patch)
tree52d8414aee5f558f890cbb5311791fdea79b4417
parent0aefe152af40436f532e3b37ff8ab602a0af6e6f (diff)
parentf5e1b859c8547865deb0ef8241c51ea4a00a7f97 (diff)
downloados-client-config-88180f9771a5092116a6f06df6dd502e0bfe3ab7.tar.gz
Merge "Add support for legacy envvar prefixes"
-rw-r--r--os_client_config/config.py20
-rw-r--r--os_client_config/tests/test_environ.py18
2 files changed, 30 insertions, 8 deletions
diff --git a/os_client_config/config.py b/os_client_config/config.py
index f439d5f..8d92c8f 100644
--- a/os_client_config/config.py
+++ b/os_client_config/config.py
@@ -81,21 +81,24 @@ def get_boolean(value):
return False
-def _get_os_environ():
+def _get_os_environ(envvar_prefix=None):
ret = defaults.get_defaults()
+ if not envvar_prefix:
+ # This makes the or below be OS_ or OS_ which is a no-op
+ envvar_prefix = 'OS_'
environkeys = [k for k in os.environ.keys()
- if k.startswith('OS_')
+ if k.startswith('OS_') or k.startswith(envvar_prefix)
and not k.startswith('OS_TEST') # infra CI var
and not k.startswith('OS_STD') # infra CI var
]
+ for k in environkeys:
+ newkey = k.split('_', 1)[-1].lower()
+ ret[newkey] = os.environ[k]
# If the only environ key is region name, don't make a cloud, because
# it's being used as a cloud selector
if not environkeys or (
- len(environkeys) == 1 and 'OS_REGION_NAME' in environkeys):
+ len(environkeys) == 1 and 'region_name' in ret):
return None
- for k in environkeys:
- newkey = k[3:].lower()
- ret[newkey] = os.environ[k]
return ret
@@ -115,7 +118,8 @@ def _auth_update(old_dict, new_dict):
class OpenStackConfig(object):
def __init__(self, config_files=None, vendor_files=None,
- override_defaults=None, force_ipv4=None):
+ override_defaults=None, force_ipv4=None,
+ envvar_prefix=None):
self._config_files = config_files or CONFIG_FILES
self._vendor_files = vendor_files or VENDOR_FILES
@@ -173,7 +177,7 @@ class OpenStackConfig(object):
# make an envvars cloud
self.default_cloud = os.environ.pop('OS_CLOUD', None)
- envvars = _get_os_environ()
+ envvars = _get_os_environ(envvar_prefix=envvar_prefix)
if envvars:
self.cloud_config['clouds'][self.envvar_key] = envvars
diff --git a/os_client_config/tests/test_environ.py b/os_client_config/tests/test_environ.py
index 7f284c5..1e804fc 100644
--- a/os_client_config/tests/test_environ.py
+++ b/os_client_config/tests/test_environ.py
@@ -31,6 +31,8 @@ class TestEnviron(base.TestCase):
fixtures.EnvironmentVariable('OS_USERNAME', 'testuser'))
self.useFixture(
fixtures.EnvironmentVariable('OS_PROJECT_NAME', 'testproject'))
+ self.useFixture(
+ fixtures.EnvironmentVariable('NOVA_PROJECT_ID', 'testnova'))
def test_get_one_cloud(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
@@ -66,6 +68,22 @@ class TestEnviron(base.TestCase):
self._assert_cloud_details(cc)
self.assertNotIn('auth_url', cc.config)
self.assertIn('auth_url', cc.config['auth'])
+ self.assertNotIn('project_id', cc.config['auth'])
+ self.assertNotIn('auth_url', cc.config)
+ cc = c.get_one_cloud('_test-cloud_')
+ self._assert_cloud_details(cc)
+ cc = c.get_one_cloud('_test_cloud_no_vendor')
+ self._assert_cloud_details(cc)
+
+ def test_environ_prefix(self):
+ c = config.OpenStackConfig(config_files=[self.cloud_yaml],
+ vendor_files=[self.vendor_yaml],
+ envvar_prefix='NOVA_')
+ cc = c.get_one_cloud('envvars')
+ self._assert_cloud_details(cc)
+ self.assertNotIn('auth_url', cc.config)
+ self.assertIn('auth_url', cc.config['auth'])
+ self.assertIn('project_id', cc.config['auth'])
self.assertNotIn('auth_url', cc.config)
cc = c.get_one_cloud('_test-cloud_')
self._assert_cloud_details(cc)