summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2015-11-14 12:10:09 -0500
committerMonty Taylor <mordred@inaugust.com>2015-11-14 12:10:09 -0500
commit3e76af913ae4a29ba1e4dd9fb4cf3b5ca109f79c (patch)
tree0b44e12576a1d4184a0c6f1ad91338ec8c12b36b
parent38f959b1b592fb1d5ab8f2387f506ac851ae8b4f (diff)
downloados-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.py22
-rw-r--r--os_client_config/tests/test_cloud_config.py19
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()