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

1import logging 

2import re 

3 

4from odoo import http 

5from odoo.http import Response, request 

6 

7 

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 

12 

13 

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) 

28 

29 

30logger = logging.getLogger("werkzeug") 

31logger.addFilter(CustomFilter())