Store volumev2 and v3 extensions as well

volume, volumev2 and volumev3 services can be present in the
system, but only extensions from volume service are stored.
This patch fixes that and stores extensions from all of
these three services.

Change-Id: I45cb42cc50a34414b41b078926453c9cd1696eba
This commit is contained in:
Martin Kopec
2018-05-16 14:55:33 +00:00
parent ff5fbcbdb3
commit 2d9b362120

View File

@@ -67,6 +67,31 @@ class Services(object):
self._services.append(service)
service_name = 'volume'
versions = C.SERVICE_VERSIONS[service_name]['supported_versions']
self.merge_exts_multiversion_service(service_name, versions)
def merge_exts_multiversion_service(self, name, versions):
"""Merges extensions of a service given by its name
Looking for extensions from all versions of the service
defined by name and merges them to that provided service.
:param name: Name of the service
:type name: string
:param versions: Supported versions
:type versions: list
"""
if not self.is_service(name):
return
s = self.get_service(name)
services_lst = []
for v in versions:
if self.is_service(name + v):
services_lst.append(self.get_service(name + v))
services_lst.append(s)
s.extensions = self.merge_extensions(services_lst)
def get_endpoints(self, entry):
for ep in entry['endpoints']:
if self._creds.api_version == 3:
@@ -199,6 +224,19 @@ class Services(object):
for item in supported_versions)
self._conf.set(section, 'api_' + version, str(is_supported))
def merge_extensions(self, service_objects):
"""Merges extensions from all provided service objects
:param service_objects:
:type service_objects: list
:return: Merged extensions
:rtype: list
"""
extensions = []
for o in service_objects:
extensions += o.extensions
return extensions
def set_service_extensions(self):
postfix = "-feature-enabled"
keystone_v3_support = self._conf.get('identity' + postfix, 'api_v3')