From 5492ca35514b2f412f2cb0ca7771b127825e1b9a Mon Sep 17 00:00:00 2001 From: Patrick Tombez Date: Mon, 6 May 2019 14:26:07 +0200 Subject: [PATCH] Add monitoring_status --- monitoring_status/README.rst | 9 +++++++ monitoring_status/__init__.py | 2 ++ monitoring_status/__openerp__.py | 15 +++++++++++ monitoring_status/controllers/__init__.py | 1 + monitoring_status/controllers/main.py | 31 +++++++++++++++++++++++ 5 files changed, 58 insertions(+) create mode 100644 monitoring_status/README.rst create mode 100644 monitoring_status/__init__.py create mode 100644 monitoring_status/__openerp__.py create mode 100644 monitoring_status/controllers/__init__.py create mode 100644 monitoring_status/controllers/main.py diff --git a/monitoring_status/README.rst b/monitoring_status/README.rst new file mode 100644 index 0000000..b939c7a --- /dev/null +++ b/monitoring_status/README.rst @@ -0,0 +1,9 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License + +Monitoring: Status +================== + +Provides a HTTP route that returns health status of the instance. + +The url to call is ``http://server/monitoring/status`` diff --git a/monitoring_status/__init__.py b/monitoring_status/__init__.py new file mode 100644 index 0000000..153a9e3 --- /dev/null +++ b/monitoring_status/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import controllers diff --git a/monitoring_status/__openerp__.py b/monitoring_status/__openerp__.py new file mode 100644 index 0000000..392abb6 --- /dev/null +++ b/monitoring_status/__openerp__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + + +{'name': 'Monitoring: Status', + 'version': '8.0.1.0.0', + 'author': 'Camptocamp,Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'category': 'category', + 'depends': ['base', 'web'], + 'website': 'http://www.camptocamp.com', + 'data': [], + 'installable': True, + } diff --git a/monitoring_status/controllers/__init__.py b/monitoring_status/controllers/__init__.py new file mode 100644 index 0000000..12a7e52 --- /dev/null +++ b/monitoring_status/controllers/__init__.py @@ -0,0 +1 @@ +from . import main diff --git a/monitoring_status/controllers/main.py b/monitoring_status/controllers/main.py new file mode 100644 index 0000000..da66f95 --- /dev/null +++ b/monitoring_status/controllers/main.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +import json + +import werkzeug + +from openerp import http +from openerp.addons.web.controllers.main import ensure_db + + +class Monitoring(http.Controller): + + @http.route('/monitoring/status', type='http', auth='none') + def status(self): + ensure_db() + # TODO: add 'sub-systems' status and infos: + # queue job, cron, database, ... + headers = {'Content-Type': 'application/json'} + info = {'status': 1} + session = http.request.session + # We set a custom expiration of 1 second for this request, as we do a + # lot of health checks, we don't want those anonymous sessions to be + # kept. Beware, it works only when session_redis is used. + # Alternatively, we could set 'session.should_save = False', which is + # tested in odoo source code, but we wouldn't check the health of + # Redis. + if not session.uid: + session.expiration = 1 + return werkzeug.wrappers.Response(json.dumps(info), headers=headers)