Clear the difference between service type and name
The current code mixes service type and service name based on the context. Service type should be service type allways. The same applies on service name. The patch clears the difference between these two different variables. Story: 2005820 Task: 33577 Change-Id: Ifdeaa2b854dfa2dcfda1491b522e4e67b822fc4f
This commit is contained in:
parent
5dda24d406
commit
3abb0ae5c5
|
@ -535,7 +535,7 @@ def config_tempest(**kwargs):
|
||||||
convert=kwargs.get('convert_to_raw', False))
|
convert=kwargs.get('convert_to_raw', False))
|
||||||
image.create_tempest_images(conf)
|
image.create_tempest_images(conf)
|
||||||
|
|
||||||
has_neutron = services.is_service("network")
|
has_neutron = services.is_service(**{"type": "network"})
|
||||||
network = services.get_service("network")
|
network = services.get_service("network")
|
||||||
network.create_tempest_networks(has_neutron, conf,
|
network.create_tempest_networks(has_neutron, conf,
|
||||||
kwargs.get('network_id'))
|
kwargs.get('network_id'))
|
||||||
|
|
|
@ -28,9 +28,10 @@ class ServiceError(Exception):
|
||||||
|
|
||||||
|
|
||||||
class Service(object):
|
class Service(object):
|
||||||
def __init__(self, name, service_url, token, disable_ssl_validation,
|
def __init__(self, name, s_type, service_url, token,
|
||||||
client=None):
|
disable_ssl_validation, client=None):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
self.s_type = s_type
|
||||||
self.service_url = service_url
|
self.service_url = service_url
|
||||||
self.headers = {'Accept': 'application/json', 'X-Auth-Token': token}
|
self.headers = {'Accept': 'application/json', 'X-Auth-Token': token}
|
||||||
self.disable_ssl_validation = disable_ssl_validation
|
self.disable_ssl_validation = disable_ssl_validation
|
||||||
|
@ -58,11 +59,11 @@ class Service(object):
|
||||||
r = http.request('GET', url, headers=self.headers)
|
r = http.request('GET', url, headers=self.headers)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
LOG.error("Request on service '%s' with url '%s' failed",
|
LOG.error("Request on service '%s' with url '%s' failed",
|
||||||
(self.name, url))
|
(self.s_type, url))
|
||||||
raise e
|
raise e
|
||||||
if r.status >= 400:
|
if r.status >= 400:
|
||||||
raise ServiceError("Request on service '%s' with url '%s' failed"
|
raise ServiceError("Request on service '%s' with url '%s' failed"
|
||||||
" with code %d" % (self.name, url, r.status))
|
" with code %d" % (self.s_type, url, r.status))
|
||||||
return r.data
|
return r.data
|
||||||
|
|
||||||
def set_extensions(self):
|
def set_extensions(self):
|
||||||
|
@ -131,21 +132,21 @@ class Service(object):
|
||||||
diverges from the service name. The main example is object-store
|
diverges from the service name. The main example is object-store
|
||||||
service where the <service>-feature-enabled is object-storage.
|
service where the <service>-feature-enabled is object-storage.
|
||||||
"""
|
"""
|
||||||
return self.name
|
return self.s_type
|
||||||
|
|
||||||
def get_service_extension_key(self):
|
def get_service_extension_key(self):
|
||||||
"""Return the extension key for a particular service"""
|
"""Return the extension key for a particular service"""
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_unversioned_service_name(self):
|
def get_unversioned_service_type(self):
|
||||||
"""Return name of service without versions.
|
"""Return type of service without versions.
|
||||||
|
|
||||||
Some services are versioned like volumev2 and volumev3, we try to
|
Some services are versioned like volumev2 and volumev3, we try to
|
||||||
discover these services checking the supported versions, so we need
|
discover these services checking the supported versions, so we need
|
||||||
to know the unversioned service name for this.
|
to know the unversioned service type for this.
|
||||||
The default value is the name of the service.
|
The default value is the type of the service.
|
||||||
"""
|
"""
|
||||||
return self.name
|
return self.s_type
|
||||||
|
|
||||||
def post_configuration(self, conf, is_service):
|
def post_configuration(self, conf, is_service):
|
||||||
"""Do post congiruation steps.
|
"""Do post congiruation steps.
|
||||||
|
|
|
@ -63,7 +63,7 @@ class ComputeService(VersionedService):
|
||||||
|
|
||||||
def post_configuration(self, conf, is_service):
|
def post_configuration(self, conf, is_service):
|
||||||
conf.set('compute-feature-enabled', 'attach_encrypted_volume',
|
conf.set('compute-feature-enabled', 'attach_encrypted_volume',
|
||||||
str(is_service('key-manager')))
|
str(is_service(**{'type': 'key-manager'})))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_service_name():
|
def get_service_name():
|
||||||
|
|
|
@ -23,10 +23,10 @@ from config_tempest.services.base import VersionedService
|
||||||
|
|
||||||
|
|
||||||
class IdentityService(VersionedService):
|
class IdentityService(VersionedService):
|
||||||
def __init__(self, name, service_url, token, disable_ssl_validation,
|
def __init__(self, name, s_type, service_url, token,
|
||||||
client=None):
|
disable_ssl_validation, client=None):
|
||||||
super(IdentityService, self).__init__(
|
super(IdentityService, self).__init__(
|
||||||
name, service_url, token, disable_ssl_validation, client)
|
name, s_type, service_url, token, disable_ssl_validation, client)
|
||||||
self.extensions_v3 = []
|
self.extensions_v3 = []
|
||||||
version = ''
|
version = ''
|
||||||
if 'v2' in self.service_url:
|
if 'v2' in self.service_url:
|
||||||
|
|
|
@ -26,9 +26,9 @@ from config_tempest.services.base import VersionedService
|
||||||
|
|
||||||
class ImageService(VersionedService):
|
class ImageService(VersionedService):
|
||||||
|
|
||||||
def __init__(self, name, service_url, token, disable_ssl_validation,
|
def __init__(self, name, s_type, service_url, token,
|
||||||
client=None):
|
disable_ssl_validation, client=None):
|
||||||
super(ImageService, self).__init__(name, service_url, token,
|
super(ImageService, self).__init__(name, s_type, service_url, token,
|
||||||
disable_ssl_validation,
|
disable_ssl_validation,
|
||||||
client)
|
client)
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ class Services(object):
|
||||||
endpoint_data), s_type)
|
endpoint_data), s_type)
|
||||||
|
|
||||||
# Create the service class and add it to services list
|
# Create the service class and add it to services list
|
||||||
service = s_class(s_type, url, token,
|
service = s_class(s_name, s_type, url, token,
|
||||||
self._ssl_validation,
|
self._ssl_validation,
|
||||||
self._clients.get_service_client(
|
self._clients.get_service_client(
|
||||||
s_type))
|
s_type))
|
||||||
|
@ -117,7 +117,7 @@ class Services(object):
|
||||||
# service is not available
|
# service is not available
|
||||||
# quickly instantiate a class in order to set
|
# quickly instantiate a class in order to set
|
||||||
# availability of the service
|
# availability of the service
|
||||||
s = s_class(None, None, None, None)
|
s = s_class(None, None, None, None, None)
|
||||||
s.set_availability(self._conf, False)
|
s.set_availability(self._conf, False)
|
||||||
|
|
||||||
def merge_exts_multiversion_service(self, service):
|
def merge_exts_multiversion_service(self, service):
|
||||||
|
@ -129,11 +129,11 @@ class Services(object):
|
||||||
:param service: Service object
|
:param service: Service object
|
||||||
"""
|
"""
|
||||||
versions = service.get_supported_versions()
|
versions = service.get_supported_versions()
|
||||||
service_name = service.get_unversioned_service_name()
|
service_type = service.get_unversioned_service_type()
|
||||||
services_lst = []
|
services_lst = []
|
||||||
for v in versions:
|
for v in versions:
|
||||||
if self.is_service(service_name + v):
|
if self.is_service(**{'type': service_type + v}):
|
||||||
services_lst.append(self.get_service(service_name + v))
|
services_lst.append(self.get_service(service_type + v))
|
||||||
services_lst.append(service)
|
services_lst.append(service)
|
||||||
service.extensions = self.merge_extensions(services_lst)
|
service.extensions = self.merge_extensions(services_lst)
|
||||||
|
|
||||||
|
@ -196,28 +196,34 @@ class Services(object):
|
||||||
replace_text = port + "/identity/" + self._creds.identity_version
|
replace_text = port + "/identity/" + self._creds.identity_version
|
||||||
return url.replace("/identity", replace_text)
|
return url.replace("/identity", replace_text)
|
||||||
|
|
||||||
def get_service(self, name):
|
def get_service(self, s_type):
|
||||||
"""Finds and returns a service object
|
"""Finds and returns a service object
|
||||||
|
|
||||||
:param name: Codename of a service
|
:param s_type: Type of a service
|
||||||
:type name: string
|
:type s_type: string
|
||||||
:return: Service object
|
:return: Service object
|
||||||
"""
|
"""
|
||||||
for service in self._services:
|
for service in self._services:
|
||||||
if service.name == name:
|
if service.s_type == s_type:
|
||||||
return service
|
return service
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def is_service(self, name):
|
def is_service(self, **kwargs):
|
||||||
"""Returns true if a service is available, false otherwise
|
"""Returns true if a service is available, false otherwise
|
||||||
|
|
||||||
:param name: Codename of a service
|
:param kwargs: Search parameters (accepts service name or type)
|
||||||
:type name: string
|
|
||||||
:rtype: boolean
|
:rtype: boolean
|
||||||
"""
|
"""
|
||||||
if name not in self.available_services.values():
|
if kwargs.get('name'):
|
||||||
return False
|
if kwargs.get('name') not in self.available_services.keys():
|
||||||
return True
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
if kwargs.get('type'):
|
||||||
|
if kwargs.get('type') not in self.available_services.values():
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def post_configuration(self):
|
def post_configuration(self):
|
||||||
for s in self._services:
|
for s in self._services:
|
||||||
|
|
|
@ -24,7 +24,7 @@ class ShareService(VersionedService):
|
||||||
conf.set('share', 'min_api_microversion', m_vs['min_microversion'])
|
conf.set('share', 'min_api_microversion', m_vs['min_microversion'])
|
||||||
conf.set('share', 'max_api_microversion', m_vs['max_microversion'])
|
conf.set('share', 'max_api_microversion', m_vs['max_microversion'])
|
||||||
|
|
||||||
def get_unversioned_service_name(self):
|
def get_unversioned_service_type(self):
|
||||||
return 'share'
|
return 'share'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
@ -52,7 +52,7 @@ class VolumeService(VersionedService):
|
||||||
def get_feature_name(self):
|
def get_feature_name(self):
|
||||||
return 'volume'
|
return 'volume'
|
||||||
|
|
||||||
def get_unversioned_service_name(self):
|
def get_unversioned_service_type(self):
|
||||||
return 'volume'
|
return 'volume'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -61,7 +61,7 @@ class VolumeService(VersionedService):
|
||||||
|
|
||||||
def post_configuration(self, conf, is_service):
|
def post_configuration(self, conf, is_service):
|
||||||
# Verify if the cinder backup service is enabled
|
# Verify if the cinder backup service is enabled
|
||||||
if not is_service("volumev3"):
|
if not is_service(**{"type": "volumev3"}):
|
||||||
C.LOG.info("No volume service found, "
|
C.LOG.info("No volume service found, "
|
||||||
"skipping backup service check")
|
"skipping backup service check")
|
||||||
return
|
return
|
||||||
|
|
|
@ -25,6 +25,7 @@ class TestService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestService, self).setUp()
|
super(TestService, self).setUp()
|
||||||
self.Service = Service("ServiceName",
|
self.Service = Service("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
@ -75,6 +76,7 @@ class TestVersionedService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestVersionedService, self).setUp()
|
super(TestVersionedService, self).setUp()
|
||||||
self.Service = VersionedService("ServiceName",
|
self.Service = VersionedService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -35,7 +35,7 @@ class TestEc2Service(BaseConfigTempestTest):
|
||||||
self.Services = Services(self.clients, conf, self._get_creds(conf))
|
self.Services = Services(self.clients, conf, self._get_creds(conf))
|
||||||
|
|
||||||
def test_set_default_tempest_options(self):
|
def test_set_default_tempest_options(self):
|
||||||
service = Ec2Service("ec2", self.FAKE_URL, self.clients, False)
|
service = Ec2Service("ec2", "ec2", self.FAKE_URL, self.clients, False)
|
||||||
service.set_default_tempest_options(self.Services._conf)
|
service.set_default_tempest_options(self.Services._conf)
|
||||||
ec2_url = self.Services._conf.get("boto", "ec2_url")
|
ec2_url = self.Services._conf.get("boto", "ec2_url")
|
||||||
self.assertEqual(ec2_url, self.FAKE_URL)
|
self.assertEqual(ec2_url, self.FAKE_URL)
|
||||||
|
@ -55,7 +55,7 @@ class TestS3Service(BaseConfigTempestTest):
|
||||||
self.Services = Services(self.clients, conf, self._get_creds(conf))
|
self.Services = Services(self.clients, conf, self._get_creds(conf))
|
||||||
|
|
||||||
def test_set_default_tempest_options(self):
|
def test_set_default_tempest_options(self):
|
||||||
service = S3Service("s3", self.FAKE_URL, self.clients, False)
|
service = S3Service("s3", "s3", self.FAKE_URL, self.clients, False)
|
||||||
service.set_default_tempest_options(self.Services._conf)
|
service.set_default_tempest_options(self.Services._conf)
|
||||||
ec2_url = self.Services._conf.get("boto", "s3_url")
|
ec2_url = self.Services._conf.get("boto", "s3_url")
|
||||||
self.assertEqual(ec2_url, self.FAKE_URL)
|
self.assertEqual(ec2_url, self.FAKE_URL)
|
||||||
|
|
|
@ -25,6 +25,7 @@ class TestCeilometerService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestCeilometerService, self).setUp()
|
super(TestCeilometerService, self).setUp()
|
||||||
self.Service = ceilometer.MeteringService("ServiceName",
|
self.Service = ceilometer.MeteringService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -24,6 +24,7 @@ class TestComputeService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestComputeService, self).setUp()
|
super(TestComputeService, self).setUp()
|
||||||
self.Service = ComputeService("ServiceName",
|
self.Service = ComputeService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -25,6 +25,7 @@ class TestIdentityService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestIdentityService, self).setUp()
|
super(TestIdentityService, self).setUp()
|
||||||
self.Service = IdentityService("ServiceName",
|
self.Service = IdentityService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL + 'v2.0/',
|
self.FAKE_URL + 'v2.0/',
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -33,6 +33,7 @@ class TestImageService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestImageService, self).setUp()
|
super(TestImageService, self).setUp()
|
||||||
self.Service = ImageService("ServiceName",
|
self.Service = ImageService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -42,6 +42,7 @@ class TestNetworkService(BaseServiceTest):
|
||||||
super(TestNetworkService, self).setUp()
|
super(TestNetworkService, self).setUp()
|
||||||
self.conf = TempestConf()
|
self.conf = TempestConf()
|
||||||
self.Service = NetworkService("ServiceName",
|
self.Service = NetworkService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -25,6 +25,7 @@ class TestObjectStorageService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestObjectStorageService, self).setUp()
|
super(TestObjectStorageService, self).setUp()
|
||||||
self.Service = ObjectStorageService("ServiceName",
|
self.Service = ObjectStorageService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
|
@ -40,7 +40,7 @@ class TestServices(BaseConfigTempestTest):
|
||||||
@mock.patch('config_tempest.services.services.Services.'
|
@mock.patch('config_tempest.services.services.Services.'
|
||||||
'get_available_services')
|
'get_available_services')
|
||||||
def _create_services_instance(self, mock_avail, mock_discover, v2=False):
|
def _create_services_instance(self, mock_avail, mock_discover, v2=False):
|
||||||
mock_avail.return_value = {'my_service': 'my_service'}
|
mock_avail.return_value = {'my_service': 'my_type'}
|
||||||
conf = self._get_conf('v2', 'v3')
|
conf = self._get_conf('v2', 'v3')
|
||||||
creds = self._get_creds(conf, v2=v2)
|
creds = self._get_creds(conf, v2=v2)
|
||||||
clients = mock.Mock()
|
clients = mock.Mock()
|
||||||
|
@ -157,9 +157,9 @@ class TestServices(BaseConfigTempestTest):
|
||||||
def test_get_service(self):
|
def test_get_service(self):
|
||||||
services = self._create_services_instance()
|
services = self._create_services_instance()
|
||||||
exp_resp = mock.Mock()
|
exp_resp = mock.Mock()
|
||||||
exp_resp.name = 'my_service'
|
exp_resp.s_type = 'my_service_type'
|
||||||
services._services = [exp_resp]
|
services._services = [exp_resp]
|
||||||
resp = services.get_service('my_service')
|
resp = services.get_service('my_service_type')
|
||||||
self.assertEqual(resp, exp_resp)
|
self.assertEqual(resp, exp_resp)
|
||||||
resp = services.get_service('my')
|
resp = services.get_service('my')
|
||||||
self.assertEqual(resp, None)
|
self.assertEqual(resp, None)
|
||||||
|
@ -168,8 +168,13 @@ class TestServices(BaseConfigTempestTest):
|
||||||
services = self._create_services_instance()
|
services = self._create_services_instance()
|
||||||
service = mock.Mock()
|
service = mock.Mock()
|
||||||
service.name = 'my_service'
|
service.name = 'my_service'
|
||||||
|
service.s_type = 'my_type'
|
||||||
services._services = [service]
|
services._services = [service]
|
||||||
resp = services.is_service('my_service')
|
resp = services.is_service(name='my_service')
|
||||||
self.assertEqual(resp, True)
|
self.assertEqual(resp, True)
|
||||||
resp = services.is_service('other_service')
|
resp = services.is_service(name='other_service')
|
||||||
|
self.assertEqual(resp, False)
|
||||||
|
resp = services.is_service(**{'type': 'my_type'})
|
||||||
|
self.assertEqual(resp, True)
|
||||||
|
resp = services.is_service(**{'type': 'other_type'})
|
||||||
self.assertEqual(resp, False)
|
self.assertEqual(resp, False)
|
||||||
|
|
|
@ -24,6 +24,7 @@ class TestVolumeService(BaseServiceTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestVolumeService, self).setUp()
|
super(TestVolumeService, self).setUp()
|
||||||
self.Service = volume.VolumeService("ServiceName",
|
self.Service = volume.VolumeService("ServiceName",
|
||||||
|
"ServiceType",
|
||||||
self.FAKE_URL,
|
self.FAKE_URL,
|
||||||
self.FAKE_TOKEN,
|
self.FAKE_TOKEN,
|
||||||
disable_ssl_validation=False)
|
disable_ssl_validation=False)
|
||||||
|
|
Loading…
Reference in New Issue