Coverage for ingadhoc-odoo-saas / saas_client / controllers / healthz.py: 61%
18 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:05 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-09 18:05 +0000
1import logging
2import re
4from odoo import http
5from odoo.http import Response, request
8class CustomFilter(logging.Filter):
9 def filter(self, record):
10 """Filter to exclude healthz messages."""
11 return re.search("(GET|HEAD) /saas_client/healthz", record.getMessage()) is None
14class K8sHealthCheck(http.Controller):
15 @http.route("/saas_client/healthz", auth="none", methods=["GET", "HEAD"])
16 def status(self):
17 """Controller for Kubernetes health checks."""
18 headers = [
19 ("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"),
20 ("Pragma", "no-cache"),
21 ("Expires", "0"),
22 ]
23 try:
24 request.env.cr.execute("SELECT 1")
25 except Exception:
26 return Response("", status=500, headers=headers)
27 return Response("", status=204, headers=headers)
30logger = logging.getLogger("werkzeug")
31logger.addFilter(CustomFilter())