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:
parent
38f959b1b5
commit
3e76af913a
@ -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
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user