Implement set_availability method
By implementing this method we will decrease dependency on SERVICE_NAMES. python-tempestconf loops over any service which has a class implementation under config_tempest/services directory. Therefore we can easily set service availability in the loop by calling set_availability method which sets appropriate values in [service_available] section of tempest.conf. This review also fixes the problem with not taking service's versions into account when setting service availability. Story: 2002787 Task: 29632 Change-Id: Ica42fe6ae57eaef6bffd28b557f6b178a2ed8fb9
This commit is contained in:
parent
ea5e1f5638
commit
33e39f3606
@ -43,22 +43,18 @@ ALL_CREDENTIALS_KEYS = {
|
|||||||
"identity.admin_domain_name": [],
|
"identity.admin_domain_name": [],
|
||||||
}
|
}
|
||||||
|
|
||||||
# services and their codenames
|
# services, which don't have their own class implemented under
|
||||||
|
# config_tempest/services, and their codenames
|
||||||
|
# NOTE: if a service from the dict below gets implementation under
|
||||||
|
# config_tempest/services it should be removed from the list
|
||||||
SERVICE_NAMES = {
|
SERVICE_NAMES = {
|
||||||
'baremetal': 'ironic',
|
'baremetal': 'ironic',
|
||||||
'compute': 'nova',
|
|
||||||
'database': 'trove',
|
'database': 'trove',
|
||||||
'data-processing': 'sahara',
|
'data-processing': 'sahara',
|
||||||
'image': 'glance',
|
|
||||||
'network': 'neutron',
|
|
||||||
'object-store': 'swift',
|
|
||||||
'orchestration': 'heat',
|
'orchestration': 'heat',
|
||||||
'share': 'manila',
|
|
||||||
'telemetry': 'ceilometer',
|
'telemetry': 'ceilometer',
|
||||||
'volume': 'cinder',
|
|
||||||
'messaging': 'zaqar',
|
'messaging': 'zaqar',
|
||||||
'metric': 'gnocchi',
|
'metric': 'gnocchi',
|
||||||
'event': 'panko',
|
'event': 'panko',
|
||||||
'workflowv2': 'mistral',
|
'workflowv2': 'mistral',
|
||||||
'load-balancer': 'octavia',
|
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,18 @@ class Service(object):
|
|||||||
def set_versions(self):
|
def set_versions(self):
|
||||||
self.versions = []
|
self.versions = []
|
||||||
|
|
||||||
|
def set_availability(self, conf, available):
|
||||||
|
"""Sets service's availability.
|
||||||
|
|
||||||
|
The services's codename will be set to desired value under
|
||||||
|
[service_available] section in tempest.conf during the services
|
||||||
|
discovery process.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
conf.set('service_available', self.get_codename(), str(available))
|
||||||
|
except NotImplementedError:
|
||||||
|
pass
|
||||||
|
|
||||||
def get_extensions(self):
|
def get_extensions(self):
|
||||||
return self.extensions
|
return self.extensions
|
||||||
|
|
||||||
@ -77,7 +89,7 @@ class Service(object):
|
|||||||
def get_service_name():
|
def get_service_name():
|
||||||
"""Return the service name.
|
"""Return the service name.
|
||||||
|
|
||||||
This return a list because you can have different services for the
|
This returns a list because you can have different services for the
|
||||||
same type, like volume, volumev2, volumev3
|
same type, like volume, volumev2, volumev3
|
||||||
"""
|
"""
|
||||||
return []
|
return []
|
||||||
@ -85,8 +97,8 @@ class Service(object):
|
|||||||
def get_versions(self):
|
def get_versions(self):
|
||||||
"""Return the versions available for each service.
|
"""Return the versions available for each service.
|
||||||
|
|
||||||
This doesn't means tempestconf support all these versions. Only that
|
This doesn't mean tempestconf supports all these versions. Only that
|
||||||
the service have these api versions enabled.
|
the service has these api versions enabled.
|
||||||
"""
|
"""
|
||||||
return self.versions
|
return self.versions
|
||||||
|
|
||||||
@ -101,14 +113,15 @@ class Service(object):
|
|||||||
"""
|
"""
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_catalog(self):
|
@staticmethod
|
||||||
"""Return the catalog name of a service.
|
def get_codename():
|
||||||
|
"""Return the service_available name of the service.
|
||||||
|
|
||||||
Usually the catalog has the same name of the service, in some cases
|
This name is used when setting service availability in
|
||||||
this is not true, like in volume, that we have volumev3 and volumev2
|
set_availability method. If the method is not implemented, service
|
||||||
for example.
|
availability is not set.
|
||||||
"""
|
"""
|
||||||
return self.name
|
raise NotImplementedError
|
||||||
|
|
||||||
def get_feature_name(self):
|
def get_feature_name(self):
|
||||||
"""Return the name of service used in <service>-feature-enabled.
|
"""Return the name of service used in <service>-feature-enabled.
|
||||||
|
@ -60,3 +60,7 @@ class ComputeService(VersionedService):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_service_name():
|
def get_service_name():
|
||||||
return ['nova']
|
return ['nova']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_codename():
|
||||||
|
return 'nova'
|
||||||
|
@ -64,9 +64,6 @@ class IdentityService(VersionedService):
|
|||||||
def get_service_name():
|
def get_service_name():
|
||||||
return ['keystone']
|
return ['keystone']
|
||||||
|
|
||||||
def get_catalog(self):
|
|
||||||
return 'identity'
|
|
||||||
|
|
||||||
def set_identity_v3_extensions(self):
|
def set_identity_v3_extensions(self):
|
||||||
"""Returns discovered identity v3 extensions
|
"""Returns discovered identity v3 extensions
|
||||||
|
|
||||||
|
@ -69,8 +69,9 @@ class ImageService(VersionedService):
|
|||||||
def get_service_name():
|
def get_service_name():
|
||||||
return ['glance']
|
return ['glance']
|
||||||
|
|
||||||
def get_catalog(self):
|
@staticmethod
|
||||||
return 'image'
|
def get_codename():
|
||||||
|
return 'glance'
|
||||||
|
|
||||||
def set_versions(self):
|
def set_versions(self):
|
||||||
super(ImageService, self).set_versions(top_level=False)
|
super(ImageService, self).set_versions(top_level=False)
|
||||||
|
@ -95,3 +95,7 @@ class NetworkService(VersionedService):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_service_name():
|
def get_service_name():
|
||||||
return ['neutron']
|
return ['neutron']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_codename():
|
||||||
|
return 'neutron'
|
||||||
|
@ -108,3 +108,7 @@ class ObjectStorageService(Service):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_service_name():
|
def get_service_name():
|
||||||
return ['swift']
|
return ['swift']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_codename():
|
||||||
|
return 'swift'
|
||||||
|
@ -30,3 +30,7 @@ class LoadBalancerService(VersionedService):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_service_name():
|
def get_service_name():
|
||||||
return ['octavia']
|
return ['octavia']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_codename():
|
||||||
|
return 'octavia'
|
||||||
|
@ -112,7 +112,15 @@ class Services(object):
|
|||||||
# default tempest options
|
# default tempest options
|
||||||
service.set_default_tempest_options(self._conf)
|
service.set_default_tempest_options(self._conf)
|
||||||
|
|
||||||
|
service.set_availability(self._conf, True)
|
||||||
|
|
||||||
self._services.append(service)
|
self._services.append(service)
|
||||||
|
else:
|
||||||
|
# service is not available
|
||||||
|
# quickly instantiate a class in order to set
|
||||||
|
# availability of the service
|
||||||
|
s = s_class(None, None, None, None)
|
||||||
|
s.set_availability(self._conf, False)
|
||||||
|
|
||||||
def merge_exts_multiversion_service(self, service):
|
def merge_exts_multiversion_service(self, service):
|
||||||
"""Merges extensions of a service given by its name
|
"""Merges extensions of a service given by its name
|
||||||
@ -214,10 +222,6 @@ class Services(object):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def set_service_availability(self):
|
def set_service_availability(self):
|
||||||
# check if volume service is disabled
|
|
||||||
if self._conf.has_option('services', 'volume'):
|
|
||||||
if not self._conf.getboolean('services', 'volume'):
|
|
||||||
C.SERVICE_NAMES.pop('volume')
|
|
||||||
# check availability of volume backup service
|
# check availability of volume backup service
|
||||||
volume.check_volume_backup_service(self._conf,
|
volume.check_volume_backup_service(self._conf,
|
||||||
self._clients.volume_client,
|
self._clients.volume_client,
|
||||||
|
@ -48,8 +48,9 @@ class ShareService(VersionedService):
|
|||||||
def get_unversioned_service_name(self):
|
def get_unversioned_service_name(self):
|
||||||
return 'share'
|
return 'share'
|
||||||
|
|
||||||
def get_catalog(self):
|
@staticmethod
|
||||||
return 'sharev2'
|
def get_codename():
|
||||||
|
return 'manila'
|
||||||
|
|
||||||
def get_feature_name(self):
|
def get_feature_name(self):
|
||||||
return 'share'
|
return 'share'
|
||||||
|
@ -62,8 +62,9 @@ class VolumeService(VersionedService):
|
|||||||
def get_supported_versions(self):
|
def get_supported_versions(self):
|
||||||
return ['v2', 'v3']
|
return ['v2', 'v3']
|
||||||
|
|
||||||
def get_catalog(self):
|
@staticmethod
|
||||||
return 'volumev3'
|
def get_codename():
|
||||||
|
return 'cinder'
|
||||||
|
|
||||||
def get_feature_name(self):
|
def get_feature_name(self):
|
||||||
return 'volume'
|
return 'volume'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user