From 5bd25d408a11b879d7853fc4e95c5c71f999d581 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Mon, 1 Jun 2015 16:21:39 -0400 Subject: [PATCH] Generate sane errors if the mongo database is down when a request for fact versions is made --- awx/api/views.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/awx/api/views.py b/awx/api/views.py index 6ec974d5fe..4ea8b8c6e9 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -35,6 +35,9 @@ from rest_framework.settings import api_settings from rest_framework.views import exception_handler from rest_framework import status +# MongoEngine +import mongoengine + # QSStats import qsstats @@ -1139,6 +1142,8 @@ class HostFactVersionsList(MongoListAPIView): fact_host = FactHost.objects.get(hostname=host.name) except FactHost.DoesNotExist: return None + except mongoengine.ConnectionError: + return Response(dict(error="System Tracking Database is disabled"), status=status.HTTP_400_BAD_REQUEST) kv = { 'host': fact_host.id, @@ -1156,7 +1161,10 @@ class HostFactVersionsList(MongoListAPIView): def list(self, *args, **kwargs): queryset = self.get_queryset() or [] - serializer = FactVersionSerializer(queryset, many=True, context=dict(host_obj=self.get_parent_object())) + try: + serializer = FactVersionSerializer(queryset, many=True, context=dict(host_obj=self.get_parent_object())) + except mongoengine.ConnectionError: + return Response(dict(error="System Tracking Database is disabled"), status=status.HTTP_400_BAD_REQUEST) return Response(dict(results=serializer.data)) class HostSingleFactView(MongoAPIView):