diff --git a/armada/api/controller/health.py b/armada/api/controller/health.py new file mode 100644 index 00000000..f6467daa --- /dev/null +++ b/armada/api/controller/health.py @@ -0,0 +1,28 @@ +# Copyright 2017 AT&T Intellectual Property. All other rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import falcon + +from armada import api + + +class Health(api.BaseResource): + """ + Return empty response/body to show that Armada is healthy. + """ + + def on_get(self, req, resp): + """ + It really does nothing right now. It may do more later. + """ + resp.status = falcon.HTTP_204 diff --git a/armada/api/server.py b/armada/api/server.py index b8d34da9..e6177e5a 100644 --- a/armada/api/server.py +++ b/armada/api/server.py @@ -23,6 +23,7 @@ from armada.api.middleware import ContextMiddleware from armada.api.middleware import LoggingMiddleware from armada.api.controller.test import Test from armada.api.controller.test import Tests +from armada.api.controller.health import Health from armada.api.controller.tiller import Release from armada.api.controller.tiller import Status from armada.api.controller.validation import Validate @@ -50,6 +51,7 @@ def create(middleware=CONF.middleware): # Configure API routing url_routes_v1 = ( + ('health', Health()), ('apply', Apply()), ('releases', Release()), ('status', Status()), diff --git a/armada/tests/unit/api/test_api.py b/armada/tests/unit/api/test_api.py index 5a749225..efeb9da3 100644 --- a/armada/tests/unit/api/test_api.py +++ b/armada/tests/unit/api/test_api.py @@ -105,3 +105,10 @@ class TestAPI(APITestCase): # FIXME(lamt) Need authentication - mock, fixture # self.assertEqual(result.json, doc) + + def test_health_endpoint(self): + """ + Validate that /api/v1.0/health returns 204. + """ + result = self.simulate_get('/api/v1.0/health') + self.assertEqual(result.status, falcon.HTTP_204)