diff --git a/cloudbaseinit/exception.py b/cloudbaseinit/exception.py index 2d7f60c4..f6337eca 100644 --- a/cloudbaseinit/exception.py +++ b/cloudbaseinit/exception.py @@ -30,6 +30,13 @@ class ServiceException(Exception): pass +class MetadaNotFoundException(CloudbaseInitException): + + """Exception thrown in case no metadata service is found.""" + + pass + + class CertificateVerifyFailed(ServiceException): """The received certificate is not valid. diff --git a/cloudbaseinit/init.py b/cloudbaseinit/init.py index 7fbbbcad..6282ea7e 100644 --- a/cloudbaseinit/init.py +++ b/cloudbaseinit/init.py @@ -18,6 +18,7 @@ import sys from oslo_log import log as oslo_logging from cloudbaseinit import conf as cloudbaseinit_conf +from cloudbaseinit import exception from cloudbaseinit.metadata import factory as metadata_factory from cloudbaseinit.osutils import factory as osutils_factory from cloudbaseinit.plugins.common import base as plugins_base @@ -134,7 +135,12 @@ class InitManager(object): plugins_base.PLUGIN_STAGE_PRE_METADATA_DISCOVERY) if not (reboot_required and CONF.allow_reboot): - service = metadata_factory.get_metadata_service() + try: + service = metadata_factory.get_metadata_service() + except exception.MetadaNotFoundException: + LOG.error("No metadata service found") + service = None + if service: LOG.info('Metadata service loaded: \'%s\'' % service.get_name()) diff --git a/cloudbaseinit/metadata/factory.py b/cloudbaseinit/metadata/factory.py index 24bea30f..7923b048 100644 --- a/cloudbaseinit/metadata/factory.py +++ b/cloudbaseinit/metadata/factory.py @@ -34,4 +34,4 @@ def get_metadata_service(): except Exception as ex: LOG.error("Failed to load metadata service '%s'" % class_path) LOG.exception(ex) - raise exception.CloudbaseInitException("No available service found") + raise exception.MetadaNotFoundException("No available service found")