Files
notifications-admin/app/status/views/healthcheck.py
Alex Janousek 8057c7f8dc Consolidating code ql findings (#2920)
* Consolidating code ql findings

* Added ref files for backstop to set baseline for removing custom js file

* Potential fix for code scanning alert no. 32: URL redirection from remote source

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Removed unused large file

* Fixed import order

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-09-18 16:42:39 -04:00

86 lines
2.8 KiB
Python

import time
import traceback
from flask import current_app, jsonify, request
from redis import RedisError
from app import status_api_client, version
from app.extensions import redis_client
from app.status import status
from notifications_python_client.errors import HTTPError
@status.route("/_status", methods=["GET"])
def show_status():
if request.args.get("elb", None) or request.args.get("simple", None):
return jsonify(status="ok"), 200
else:
try:
api_status = status_api_client.get_status()
except HTTPError as err:
current_app.logger.exception("API failed to respond")
return jsonify(status="error", message=str(err.message)), 500
return (
jsonify(
status="ok",
api=api_status,
git_commit=version.__git_commit__,
build_time=version.__time__,
),
200,
)
@status.route("/_status/redis", methods=["GET"])
def show_redis_status():
try:
try:
api_status = {"error": "unexpected error"}
redis_uri = current_app.config["REDIS_URL"]
current_app.logger.info(f"config['REDIS_URL']: {redis_uri}")
redis_enabled = current_app.config["REDIS_ENABLED"]
current_app.logger.info(f"config['REDIS_ENABLED']: {redis_enabled}")
if redis_enabled:
current_app.logger.info("config['REDIS_ENABLED'] evaluates as True")
try:
now = time.time()
redis_client.set("mytestkey", now)
val = redis_client.get("mytestkey")
current_app.logger.info(
f"Retrieved value from redis for mytestkey is: {val}"
)
except RedisError as err:
current_app.logger.exception(
f"Redis service failed to respond with {err}"
)
api_status = (
status_api_client.get_count_of_live_services_and_organizations_cached()
)
except HTTPError as err:
current_app.logger.exception("API failed to respond")
return jsonify(status="error", message=str(err.message)), 500
return (
jsonify(
status="ok",
api=api_status,
git_commit=version.__git_commit__,
build_time=version.__time__,
),
200,
)
except Exception as err:
current_app.logger.exception(
f"Unhandled exception: {err} - {traceback.format_exc()}"
)
return (
jsonify(
status="error: internal server error",
api=api_status,
git_commit=version.__git_commit__,
build_time=version.__time__,
),
500,
)