Change the health check to ping the db and the redis build logs.
This commit is contained in:
parent
b3aba08426
commit
8b5c781f84
3 changed files with 27 additions and 3 deletions
|
@ -73,6 +73,13 @@ class RedisBuildLogs(object):
|
||||||
|
|
||||||
return json.loads(fetched) if fetched else None
|
return json.loads(fetched) if fetched else None
|
||||||
|
|
||||||
|
def check_health(self):
|
||||||
|
try:
|
||||||
|
return self._redis.ping() == True
|
||||||
|
except redis.ConnectionError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class BuildLogs(object):
|
class BuildLogs(object):
|
||||||
def __init__(self, app=None):
|
def __init__(self, app=None):
|
||||||
self.app = app
|
self.app = app
|
||||||
|
|
|
@ -1647,3 +1647,11 @@ def delete_user(user):
|
||||||
user.delete_instance(recursive=True, delete_nullable=True)
|
user.delete_instance(recursive=True, delete_nullable=True)
|
||||||
|
|
||||||
# TODO: also delete any repository data associated
|
# TODO: also delete any repository data associated
|
||||||
|
|
||||||
|
def check_health():
|
||||||
|
# We will connect to the db, check that it contains some log entry kinds
|
||||||
|
try:
|
||||||
|
found_count = LogEntryKind.select().count()
|
||||||
|
return found_count > 0
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
|
@ -2,13 +2,13 @@ import logging
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from flask import (abort, redirect, request, url_for, make_response, Response,
|
from flask import (abort, redirect, request, url_for, make_response, Response,
|
||||||
Blueprint, send_from_directory)
|
Blueprint, send_from_directory, jsonify)
|
||||||
from flask.ext.login import current_user
|
from flask.ext.login import current_user
|
||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
|
|
||||||
from data import model
|
from data import model
|
||||||
from data.model.oauth import DatabaseAuthorizationProvider
|
from data.model.oauth import DatabaseAuthorizationProvider
|
||||||
from app import app, billing as stripe
|
from app import app, billing as stripe, build_logs
|
||||||
from auth.auth import require_session_login
|
from auth.auth import require_session_login
|
||||||
from auth.permissions import AdministerOrganizationPermission
|
from auth.permissions import AdministerOrganizationPermission
|
||||||
from util.invoice import renderInvoiceToPdf
|
from util.invoice import renderInvoiceToPdf
|
||||||
|
@ -139,7 +139,16 @@ def v1():
|
||||||
@web.route('/status', methods=['GET'])
|
@web.route('/status', methods=['GET'])
|
||||||
@no_cache
|
@no_cache
|
||||||
def status():
|
def status():
|
||||||
return make_response('Healthy')
|
db_healthy = model.check_health()
|
||||||
|
buildlogs_healthy = build_logs.check_health()
|
||||||
|
|
||||||
|
response = jsonify({
|
||||||
|
'db_healthy': db_healthy,
|
||||||
|
'buildlogs_healthy': buildlogs_healthy,
|
||||||
|
})
|
||||||
|
response.status_code = 200 if db_healthy and buildlogs_healthy else 503
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
@web.route('/tos', methods=['GET'])
|
@web.route('/tos', methods=['GET'])
|
||||||
|
|
Reference in a new issue