From 720dbed814f7a77fb0b131644ac3997538d46914 Mon Sep 17 00:00:00 2001 From: RhodeCode Admin Date: Tue, 12 Oct 2021 14:29:26 +0200 Subject: [PATCH] ops: added healthcheck view --- rhodecode/apps/ops/__init__.py | 8 ++++++++ rhodecode/apps/ops/views.py | 20 ++++++++++++++++++++ rhodecode/lib/middleware/vcs.py | 3 ++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/rhodecode/apps/ops/__init__.py b/rhodecode/apps/ops/__init__.py index 16e42d60..7279e061 100644 --- a/rhodecode/apps/ops/__init__.py +++ b/rhodecode/apps/ops/__init__.py @@ -51,6 +51,14 @@ def admin_routes(config): route_name='ops_redirect_test', request_method='GET', renderer='json_ext') + config.add_route( + name='ops_healthcheck', + pattern='/status') + config.add_view( + OpsView, + attr='ops_healthcheck', + route_name='ops_healthcheck', request_method='GET', + renderer='json_ext') def includeme(config): config.include(admin_routes, route_prefix=ADMIN_PREFIX + '/ops') diff --git a/rhodecode/apps/ops/views.py b/rhodecode/apps/ops/views.py index 56eae33d..20c12d23 100644 --- a/rhodecode/apps/ops/views.py +++ b/rhodecode/apps/ops/views.py @@ -72,3 +72,23 @@ class OpsView(BaseAppView): """ redirect_to = self.request.GET.get('to') or h.route_path('home') raise HTTPFound(redirect_to) + + def ops_healthcheck(self): + from rhodecode.lib.system_info import load_system_info + + vcsserver_info = load_system_info('vcs_server') + if vcsserver_info: + vcsserver_info = vcsserver_info['human_value'] + + db_info = load_system_info('database_info') + if db_info: + db_info = db_info['human_value'] + + health_spec = { + 'caller_ip': self.request.user.ip_addr, + 'vcsserver': vcsserver_info, + 'db': db_info, + } + + return {'healthcheck': health_spec} + diff --git a/rhodecode/lib/middleware/vcs.py b/rhodecode/lib/middleware/vcs.py index 9b8a673b..d4b57b29 100644 --- a/rhodecode/lib/middleware/vcs.py +++ b/rhodecode/lib/middleware/vcs.py @@ -166,8 +166,9 @@ def detect_vcs_request(environ, backends): # static files no detection '_static', - # skip ops ping + # skip ops ping, status '_admin/ops/ping', + '_admin/ops/status', # full channelstream connect should be VCS skipped '_admin/channelstream/connect',