diff --git a/poppy/common/errors.py b/poppy/common/errors.py index 1fb9ad61..8fd8e986 100644 --- a/poppy/common/errors.py +++ b/poppy/common/errors.py @@ -30,10 +30,17 @@ class BadProviderDetail(Exception): class ProviderNotFound(Exception): + """Raised when domain is not associated with a known Provider""" +class ProviderDetailsIncomplete(Exception): + + """Raised when domain details with a Provider is incomplete""" + + class ServiceNotFound(Exception): + """Raised when service is not found.""" diff --git a/poppy/manager/default/analytics.py b/poppy/manager/default/analytics.py index 31dca67a..5eb60817 100644 --- a/poppy/manager/default/analytics.py +++ b/poppy/manager/default/analytics.py @@ -12,7 +12,6 @@ # implied. # See the License for the specific language governing permissions and # limitations under the License. - from oslo_log import log from poppy.common import errors @@ -61,9 +60,9 @@ class AnalyticsController(base.AnalyticsController): provider_for_domain = provider if not provider_for_domain: - msg = "Provider not found for Domain : {0}".format(domain_name) - LOG.warning(msg) - raise errors.ProviderNotFound(msg) + msg = "Provider not found for Domain {0}".format(domain_name) + LOG.error(msg) + raise errors.ProviderDetailsIncomplete(msg) provider_obj = self.providers[provider_for_domain.lower()].obj provider_service_controller = provider_obj.service_controller diff --git a/poppy/transport/pecan/controllers/v1/services.py b/poppy/transport/pecan/controllers/v1/services.py index 3cd40f87..53d840f5 100644 --- a/poppy/transport/pecan/controllers/v1/services.py +++ b/poppy/transport/pecan/controllers/v1/services.py @@ -125,6 +125,8 @@ class ServicesAnalyticsController(base.Controller, hooks.HookController): ) except errors.ServiceNotFound: return pecan.Response(status=404) + except errors.ProviderDetailsIncomplete: + return pecan.Response(status=404) except Exception: return pecan.Response(status=500) else: diff --git a/tests/unit/manager/default/test_analytics.py b/tests/unit/manager/default/test_analytics.py index 1ddbe758..cce10159 100644 --- a/tests/unit/manager/default/test_analytics.py +++ b/tests/unit/manager/default/test_analytics.py @@ -172,7 +172,7 @@ class DefaultManagerServiceTests(base.TestCase): services_controller.get_service_details_by_domain_name = \ mock.Mock(return_value=StorageResult( provider_details=provider_details_dict)) - self.assertRaises(errors.ProviderNotFound, + self.assertRaises(errors.ProviderDetailsIncomplete, analytics_controller.get_metrics_by_domain, self.project_id, self.domain_name, **extras)