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()