diff --git a/shipyard_airflow/control/api.py b/shipyard_airflow/control/api.py index aac58c6b..f7577e92 100644 --- a/shipyard_airflow/control/api.py +++ b/shipyard_airflow/control/api.py @@ -30,6 +30,7 @@ from .airflow_connections import AirflowListConnectionsResource from .airflow_get_version import GetAirflowVersionResource from .middleware import AuthMiddleware, ContextMiddleware, LoggingMiddleware from shipyard_airflow.errors import AppError +from .health import HealthResource def start_api(): @@ -66,6 +67,7 @@ def start_api(): AirflowDeleteConnectionResource()), ('/connections/{action}', AirflowListConnectionsResource()), ('/airflow/version', GetAirflowVersionResource()), + ('/health', HealthResource()), ] for path, res in v1_0_routes: diff --git a/shipyard_airflow/control/health.py b/shipyard_airflow/control/health.py new file mode 100644 index 00000000..a59b6270 --- /dev/null +++ b/shipyard_airflow/control/health.py @@ -0,0 +1,26 @@ +# 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 shipyard_airflow.control.base import BaseResource + + +class HealthResource(BaseResource): + + authorized_roles = ['anyone'] + + # Return empty response/body to show + # that shipyard is healthy + def on_get(self, req, resp): + resp.status = falcon.HTTP_204