diff options
author | Monty Taylor <mordred@inaugust.com> | 2015-11-14 12:10:09 -0500 |
---|---|---|
committer | Monty Taylor <mordred@inaugust.com> | 2015-11-14 12:10:09 -0500 |
commit | 3e76af913ae4a29ba1e4dd9fb4cf3b5ca109f79c (patch) | |
tree | 0b44e12576a1d4184a0c6f1ad91338ec8c12b36b | |
parent | 38f959b1b592fb1d5ab8f2387f506ac851ae8b4f (diff) | |
download | os-client-config-3e76af913ae4a29ba1e4dd9fb4cf3b5ca109f79c.tar.gz |
Refactor per-service key making
The key for swift is object-store, but the key in the config dict
would be object_store_api_version, so the key concatenation would
not work. In fixing that, refactor out the creation of the keys so
that the concatenation and transformation needed always happens.
Change-Id: Ic095912bfc84f13ef8b11f312303a517289e0441
-rw-r--r-- | os_client_config/cloud_config.py | 22 | ||||
-rw-r--r-- | os_client_config/tests/test_cloud_config.py | 19 |
2 files changed, 33 insertions, 8 deletions
diff --git a/os_client_config/cloud_config.py b/os_client_config/cloud_config.py index 3f46c6e..32fd3b6 100644 --- a/os_client_config/cloud_config.py +++ b/os_client_config/cloud_config.py @@ -23,6 +23,14 @@ from os_client_config import _log from os_client_config import exceptions +def _make_key(key, service_type): + if not service_type: + return key + else: + service_type = service_type.lower().replace('-', '_') + return "_".join([service_type, key]) + + class CloudConfig(object): def __init__(self, name, region, config, force_ipv4=False, auth_plugin=None, @@ -89,32 +97,30 @@ class CloudConfig(object): return self.config['auth'] def get_interface(self, service_type=None): + key = _make_key('interface', service_type) interface = self.config.get('interface') - if not service_type: - return interface - key = '{service_type}_interface'.format(service_type=service_type) return self.config.get(key, interface) def get_region_name(self, service_type=None): if not service_type: return self.region - key = '{service_type}_region_name'.format(service_type=service_type) + key = _make_key('region_name', service_type) return self.config.get(key, self.region) def get_api_version(self, service_type): - key = '{service_type}_api_version'.format(service_type=service_type) + key = _make_key('api_version', service_type) return self.config.get(key, None) def get_service_type(self, service_type): - key = '{service_type}_service_type'.format(service_type=service_type) + key = _make_key('service_type', service_type) return self.config.get(key, service_type) def get_service_name(self, service_type): - key = '{service_type}_service_name'.format(service_type=service_type) + key = _make_key('service_name', service_type) return self.config.get(key, None) def get_endpoint(self, service_type): - key = '{service_type}_endpoint'.format(service_type=service_type) + key = _make_key('endpoint', service_type) return self.config.get(key, None) @property diff --git a/os_client_config/tests/test_cloud_config.py b/os_client_config/tests/test_cloud_config.py index 1b98b8a..be2b8fe 100644 --- a/os_client_config/tests/test_cloud_config.py +++ b/os_client_config/tests/test_cloud_config.py @@ -225,6 +225,25 @@ class TestCloudConfig(base.TestCase): auth_version='2.0', timeout=None) + def test_legacy_client_object_store_endpoint(self): + mock_client = mock.Mock() + config_dict = defaults.get_defaults() + config_dict.update(fake_services_dict) + config_dict['object_store_endpoint'] = 'http://example.com/v2' + cc = cloud_config.CloudConfig( + "test1", "region-al", config_dict, auth_plugin=mock.Mock()) + cc.get_legacy_client('object-store', mock_client) + mock_client.assert_called_with( + preauthtoken=mock.ANY, + os_options={ + 'auth_token': mock.ANY, + 'region_name': 'region-al', + 'object_storage_url': 'http://example.com/v2' + }, + preauthurl='http://example.com/v2', + auth_version='2.0', + timeout=None) + @mock.patch.object(cloud_config.CloudConfig, 'get_session_endpoint') def test_legacy_client_image(self, mock_get_session_endpoint): mock_client = mock.Mock() |