From 5e7abbf44239ca7f54ad9c2efad98480b19a858e Mon Sep 17 00:00:00 2001 From: Piotr Pietruszewski Date: Mon, 4 Dec 2023 08:48:56 +0100 Subject: [PATCH] Add /healthz and /info endpoints --- bundlegen/rabbitmq/app.py | 13 +++++++++++++ bundlegen/rabbitmq/info.py | 29 +++++++++++++++++++++++++++++ docker/rabbitmq/Dockerfile | 2 +- entrypoint.sh | 7 +++++++ requirements.txt | 6 ++++-- 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 bundlegen/rabbitmq/app.py create mode 100644 bundlegen/rabbitmq/info.py create mode 100644 entrypoint.sh diff --git a/bundlegen/rabbitmq/app.py b/bundlegen/rabbitmq/app.py new file mode 100644 index 00000000..e2da608f --- /dev/null +++ b/bundlegen/rabbitmq/app.py @@ -0,0 +1,13 @@ +from flask import Flask +from info import Info + +app = Flask(__name__) +app_info = Info() + +@app.route("/healthz") +def healthz() -> str: + return 'OK' + +@app.route('/info') +def info(): + return app_info.get() diff --git a/bundlegen/rabbitmq/info.py b/bundlegen/rabbitmq/info.py new file mode 100644 index 00000000..96242f40 --- /dev/null +++ b/bundlegen/rabbitmq/info.py @@ -0,0 +1,29 @@ +from datetime import datetime +import os +import socket + +class Info: + """Get information about service""" + + def __init__(self) -> None: + """Read info""" + self.app_start_time = datetime.utcnow() + self.host_name = socket.gethostname() + self.app_branch = os.getenv("APP_BRANCH", "undefined") + self.app_name = os.getenv("APP_NAME", "undefined") + self.app_build_time = os.getenv("APP_BUILD_TIME", "undefined") + self.app_version = os.getenv("APP_VERSION", "undefined") + self.stack_name = os.getenv("STACK_NAME", "undefined") + self.app_revision = os.getenv("APP_REVISION", "undefined") + + def get(self) -> dict: + info = {} + info['APP_START_TIME'] = self.app_start_time.strftime('%Y-%m-%dT%H:%M:%SZ') + info['HOST_NAME'] = self.host_name + info['APP_BRANCH'] = self.app_branch + info['APP_NAME'] = self.app_name + info['APP_BUILD_TIME'] = self.app_build_time + info['APP_VERSION'] = self.app_version + info['STACK_NAME'] = self.stack_name + info['APP_REVISION'] = self.app_revision + return info diff --git a/docker/rabbitmq/Dockerfile b/docker/rabbitmq/Dockerfile index 2cfc6c2d..a974f4c0 100644 --- a/docker/rabbitmq/Dockerfile +++ b/docker/rabbitmq/Dockerfile @@ -53,4 +53,4 @@ RUN cd ./bundlegen && \ WORKDIR /home/bundlegenuser/bundlegen # Start BundleGen consumer -ENTRYPOINT [ "bundlegen-rabbitmq", "-vv", "start" ] \ No newline at end of file +ENTRYPOINT [ "./entrypoint.sh" ] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 00000000..d570059c --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -e + +echo "Starting Gunicorn with Flask application" +gunicorn --bind 0.0.0.0:8081 --chdir /home/bundlegenuser/bundlegen/bundlegen/rabbitmq app:app --daemon + +bundlegen-rabbitmq -vv start diff --git a/requirements.txt b/requirements.txt index 355a42a1..e1e7fd11 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,10 @@ autopep8==1.5.3 -click==7.1.2 +click>=8.1.3 humanfriendly==8.2 loguru==0.5.1 msgpack==1.0.2 pika==1.2.0 python-dotenv==0.18.0 -jsonschema \ No newline at end of file +jsonschema +gunicorn>=3.5 +flask~=3.0.0