diff --git a/ovs/extensions/generic/configuration.py b/ovs/extensions/generic/configuration.py index 6cde7165d..eb0f6b7d2 100644 --- a/ovs/extensions/generic/configuration.py +++ b/ovs/extensions/generic/configuration.py @@ -26,6 +26,7 @@ from ovs_extensions.caching.decorators import cache_file from ovs_extensions.generic.configuration import Configuration as _Configuration, ConnectionException, NotFoundException from ovs_extensions.constants.config import CONFIG_STORE_LOCATION +from ovs.extensions.generic.system import System class Configuration(_Configuration): @@ -122,6 +123,7 @@ def initialize(cls, external_config=None, logging_target=None): base_cfg['messagequeue'][key] = value for key, value in base_cfg.iteritems(): cls.set('/ovs/framework/{0}'.format(key), value, raw=False) + cls.register_usage(System.get_component_identifier()) @classmethod @cache_file(CONFIG_STORE_LOCATION) diff --git a/ovs/extensions/generic/system.py b/ovs/extensions/generic/system.py index 3b5d84b41..731b76581 100644 --- a/ovs/extensions/generic/system.py +++ b/ovs/extensions/generic/system.py @@ -21,7 +21,6 @@ import os from ovs_extensions.caching.decorators import cache_file from ovs_extensions.generic.system import System as _System -from ovs.extensions.packages.packagefactory import PackageFactory class System(_System): @@ -30,7 +29,6 @@ class System(_System): """ OVS_ID_FILE = '/etc/openvstorage_id' - RELEASE_NAME_FILE = '/opt/OpenvStorage/config/release_name' _machine_id = {} def __init__(self): @@ -60,24 +58,6 @@ def read_my_machine_id(cls): with open(cls.OVS_ID_FILE, 'r') as the_file: return the_file.read().strip() - @classmethod - def get_release_name(cls, client=None): - """ - Retrieve the release name - :param client: Client on which to retrieve the release name - :type client: ovs_extensions.generic.sshclient.SSHClient - :return: The name of the release - :rtype: str - """ - try: - if client is not None: - return client.run(['cat', cls.RELEASE_NAME_FILE]).strip() - with open(cls.RELEASE_NAME_FILE, 'r') as the_file: - return the_file.read().strip() - except: - manager = PackageFactory.get_manager() - return manager.get_release_name() - @classmethod def get_my_storagerouter(cls): """ @@ -90,3 +70,13 @@ def get_my_storagerouter(cls): if storagerouter is None: raise RuntimeError('Could not find the local StorageRouter') return storagerouter + + @staticmethod + def get_component_identifier(): + # type: () -> str + """ + Retrieve the identifier of the component + :return: The ID of the component + :rtype: str + """ + return 'framework' diff --git a/ovs/extensions/packages/packagefactory.py b/ovs/extensions/packages/packagefactory.py index 3f4cd1d65..0c3dfe689 100644 --- a/ovs/extensions/packages/packagefactory.py +++ b/ovs/extensions/packages/packagefactory.py @@ -27,6 +27,8 @@ class PackageFactory(_PackageFactory): """ Factory class returning specialized classes """ + # Allow the user to add a custom release name + RELEASE_NAME_FILE = '/opt/OpenvStorage/config/release_name' _logger = Logger('extensions-packages') def __init__(self): @@ -91,3 +93,21 @@ def get_package_info(cls): 'mutually_exclusive': {cls.PKG_VOLDRV_BASE, cls.PKG_VOLDRV_SERVER}} else: raise ValueError('Unsupported edition found: "{0}"'.format(edition)) + + @classmethod + def get_release_name(cls, client=None): + """ + Retrieve the release name + :param client: Client on which to retrieve the release name + :type client: ovs_extensions.generic.sshclient.SSHClient + :return: The name of the release + :rtype: str + """ + try: + if client is not None: + return client.run(['cat', cls.RELEASE_NAME_FILE]).strip() + with open(cls.RELEASE_NAME_FILE, 'r') as the_file: + return the_file.read().strip() + except: + manager = cls.get_manager() + return manager.get_release_name() diff --git a/webapps/api/view.py b/webapps/api/view.py index 44e593986..3c3007335 100644 --- a/webapps/api/view.py +++ b/webapps/api/view.py @@ -35,6 +35,7 @@ from ovs.extensions.generic.configuration import Configuration from ovs.extensions.generic.logger import Logger from ovs.extensions.generic.system import System +from ovs.extensions.packages.packagefactory import PackageFactory from ovs.extensions.storage.volatilefactory import VolatileFactory @@ -65,7 +66,7 @@ def get(self, request, *args, **kwargs): try: # Gather release name try: - data['release']['name'] = System.get_release_name() + data['release']['name'] = PackageFactory.get_release_name() except: MetadataView._logger.exception('Could not load release name')