From 460074b11ac9171cb7b260e1ffc01e040105b3e5 Mon Sep 17 00:00:00 2001 From: Blake Williams Date: Thu, 2 Jun 2016 19:04:42 +1000 Subject: RootResource should return 503 during startup (#699) Return 503 code while RootResource is in MODE_STARTUP --- service/pixelated/resources/__init__.py | 11 ++++++++++- service/pixelated/resources/root_resource.py | 7 +++++-- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'service/pixelated') diff --git a/service/pixelated/resources/__init__.py b/service/pixelated/resources/__init__.py index cd27fab0..8fc8080a 100644 --- a/service/pixelated/resources/__init__.py +++ b/service/pixelated/resources/__init__.py @@ -23,7 +23,7 @@ from twisted.web.resource import Resource # from pixelated.resources.login_resource import LoginResource from pixelated.resources.session import IPixelatedSession -from twisted.web.http import INTERNAL_SERVER_ERROR +from twisted.web.http import INTERNAL_SERVER_ERROR, SERVICE_UNAVAILABLE log = logging.getLogger(__name__) @@ -112,3 +112,12 @@ class UnAuthorizedResource(Resource): def render_POST(self, request): request.setResponseCode(UNAUTHORIZED) return "Unauthorized!" + + +class UnavailableResource(Resource): + def __init__(self): + Resource.__init__(self) + + def render(self, request): + request.setResponseCode(SERVICE_UNAVAILABLE) + return "Service Unavailable" diff --git a/service/pixelated/resources/root_resource.py b/service/pixelated/resources/root_resource.py index 109dc08e..aacf2b61 100644 --- a/service/pixelated/resources/root_resource.py +++ b/service/pixelated/resources/root_resource.py @@ -18,7 +18,7 @@ import json import os from string import Template -from pixelated.resources import BaseResource, UnAuthorizedResource +from pixelated.resources import BaseResource, UnAuthorizedResource, UnavailableResource from pixelated.resources.attachments_resource import AttachmentsResource from pixelated.resources.sandbox_resource import SandboxResource from pixelated.resources.contacts_resource import ContactsResource @@ -57,7 +57,10 @@ class RootResource(BaseResource): if path == '': return self if self._is_xsrf_valid(request): - return self._child_resources.get(path) + if self._mode == MODE_RUNNING: + return self._child_resources.get(path) + else: + return UnavailableResource() return UnAuthorizedResource() def _is_xsrf_valid(self, request): -- cgit v1.2.3