support-organizer/backend/src/routes/health.py

33 lines
924 B
Python
Raw Normal View History

2023-09-26 20:54:40 +00:00
from datetime import datetime
from enum import Enum
from flask.views import MethodView
import marshmallow as ma
from app import Application
from . import routes as blp
instance = Application.get_instance()
class HealthStatus(Enum):
OK = 0
WARNING = 1
ERROR = 2
CRITICAL = 3
class HealthGet(ma.Schema):
alive_since = ma.fields.String()
alive_for = ma.fields.String()
status = ma.fields.Enum(HealthStatus, type=ma.fields.String)
@blp.route("/health")
class ApiVersion(MethodView):
@blp.doc(summary="Returns the status and alive-time of the server")
@blp.response(200, HealthGet, description="Successful operation")
def get(self):
response = {
"alive_since": datetime.strftime(instance.alive_since, "%d.%m.%Y %H:%M:%S"),
"alive_for": str(datetime.now() - instance.alive_since),
"status": HealthStatus.OK
}
return response