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
This commit is contained in:
Monty Taylor 2015-11-14 12:10:09 -05:00
parent 38f959b1b5
commit 3e76af913a
2 changed files with 33 additions and 8 deletions

View File

@ -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

View File

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