From b818e1a535a0378ee5735751fff01c5d345e12f1 Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Thu, 3 Mar 2016 15:06:10 +0000 Subject: [PATCH 1/4] Populate version data with build number and fixed date --- app/version.py | 1 + scripts/update_version_file.sh | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/version.py b/app/version.py index 62a3e5dfd..a910270fa 100644 --- a/app/version.py +++ b/app/version.py @@ -1,2 +1,3 @@ __build__ = "" __time__ = "" +__travis_build__ = "" diff --git a/scripts/update_version_file.sh b/scripts/update_version_file.sh index 27117f6dd..6fb5ef795 100755 --- a/scripts/update_version_file.sh +++ b/scripts/update_version_file.sh @@ -3,4 +3,5 @@ # Update the version file of the project from the Travis build details # sed -i -e "s/__build__ =.*/__build__ = \"$TRAVIS_COMMIT\"/g" ./app/version.py -sed -i -e "s/__time__ =.*/__time__ = \"$('date +%Y-%m-%d:%H:%M:%S')\"/g" ./app/version.py \ No newline at end of file +sed -i -e "s/__travis_build__ =.*/__build__ = \"$TRAVIS_BUILD_NUMBER\"/g" ./app/version.py +sed -i -e "s/__time__ =.*/__time__ = \"$(date +%Y-%m-%d:%H:%M:%S)\"/g" ./app/version.py \ No newline at end of file From 24a9487a20ba1004df407ba1eec2b35ef1ee7a16 Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Thu, 3 Mar 2016 15:18:12 +0000 Subject: [PATCH 2/4] Updated status page - include travis build number - renamed properties - ELB version - moved code all into health check - changed health check to be on same URL for admin and api --- app/__init__.py | 29 ++++------------------- app/status/healthcheck.py | 43 ++++++++++++++++++++++++++++------ app/version.py | 4 ++-- application.py | 18 +------------- scripts/update_version_file.sh | 4 ++-- 5 files changed, 45 insertions(+), 53 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index c847036fe..b76836c08 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -53,7 +53,7 @@ def create_app(): application.register_blueprint(service_blueprint, url_prefix='/service') application.register_blueprint(user_blueprint, url_prefix='/user') application.register_blueprint(template_blueprint) - application.register_blueprint(status_blueprint, url_prefix='/status') + application.register_blueprint(status_blueprint) application.register_blueprint(notifications_blueprint) application.register_blueprint(job_blueprint) application.register_blueprint(invite_blueprint) @@ -80,32 +80,11 @@ def init_app(app): return response -def get_api_version(): - build = 'n/a' - build_time = "n/a" - try: - from app import version - build = version.__build__ - build_time = version.__time__ - except: - pass - return build, build_time - - -def get_db_version(): - try: - query = 'SELECT version_num FROM alembic_version' - full_name = db.session.execute(query).fetchone()[0] - return full_name.split('_')[0] - except: - return 'n/a' - - def email_safe(string): return "".join([ - character.lower() if character.isalnum() or character == "." else "" - for character in re.sub("\s+", ".", string.strip()) - ]) + character.lower() if character.isalnum() or character == "." else "" + for character in re.sub("\s+", ".", string.strip()) + ]) def create_uuid(): diff --git a/app/status/healthcheck.py b/app/status/healthcheck.py index b16619828..a38cfca8e 100644 --- a/app/status/healthcheck.py +++ b/app/status/healthcheck.py @@ -1,14 +1,43 @@ from flask import jsonify -from flask import Blueprint +from flask import Blueprint, request + +from app import db, version + status = Blueprint('status', __name__) @status.route('/_status', methods=['GET', 'POST']) def show_status(): - from app import (get_api_version, get_db_version) - build, build_time = get_api_version() - return jsonify(status="ok", - api_build=build, - api_built_time=build_time, - db_version=get_db_version()), 200 + travis_commit, travis_build_number, build_time = get_api_version() + if request.args.get('elb', None): + return jsonify(status="ok"), 200 + else: + return jsonify( + status="ok", + travis_commit=travis_commit, + travis_build_number=travis_build_number, + build_time=build_time, + db_version=get_db_version()), 200 + + +def get_api_version(): + travis_commit = 'n/a' + travis_job_number = 'n/a' + build_time = "n/a" + try: + travis_commit = version.__travis_commit__ + travis_job_number = version.__travis_job_number__ + build_time = version.__time__ + except: + pass + return travis_commit, travis_job_number, build_time + + +def get_db_version(): + try: + query = 'SELECT version_num FROM alembic_version' + full_name = db.session.execute(query).fetchone()[0] + return full_name + except: + return 'n/a' diff --git a/app/version.py b/app/version.py index a910270fa..d147dcf6d 100644 --- a/app/version.py +++ b/app/version.py @@ -1,3 +1,3 @@ -__build__ = "" +__travis_commit__ = "" __time__ = "" -__travis_build__ = "" +__travis_job_number__ = "" diff --git a/application.py b/application.py index 3500a5230..0918ee3e1 100644 --- a/application.py +++ b/application.py @@ -4,7 +4,7 @@ from __future__ import print_function import os from flask.ext.script import Manager, Server from flask.ext.migrate import Migrate, MigrateCommand -from app import (create_app, db, get_api_version, get_db_version) +from app import (create_app, db) application = create_app() manager = Manager(application) @@ -22,21 +22,5 @@ def list_routes(): print("{:10} {}".format(", ".join(rule.methods - set(['OPTIONS', 'HEAD'])), rule.rule)) -@manager.command -def api_version(): - """ - Retrieve the version of the api. - """ - return get_api_version() - - -@manager.command -def db_version(): - """ - Retrieve the db version. - """ - return get_db_version() - - if __name__ == '__main__': manager.run() diff --git a/scripts/update_version_file.sh b/scripts/update_version_file.sh index 6fb5ef795..5c97cda86 100755 --- a/scripts/update_version_file.sh +++ b/scripts/update_version_file.sh @@ -2,6 +2,6 @@ # # Update the version file of the project from the Travis build details # -sed -i -e "s/__build__ =.*/__build__ = \"$TRAVIS_COMMIT\"/g" ./app/version.py -sed -i -e "s/__travis_build__ =.*/__build__ = \"$TRAVIS_BUILD_NUMBER\"/g" ./app/version.py +sed -i -e "s/__travis_commit__ =.*/__build__ = \"$TRAVIS_COMMIT\"/g" ./app/version.py +sed -i -e "s/__travis_job_number__ =.*/__build__ = \"$TRAVIS_BUILD_NUMBER\"/g" ./app/version.py sed -i -e "s/__time__ =.*/__time__ = \"$(date +%Y-%m-%d:%H:%M:%S)\"/g" ./app/version.py \ No newline at end of file From 13320cbed0babe34bf2208f8889bf8e5d19c3f6f Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Thu, 3 Mar 2016 15:32:22 +0000 Subject: [PATCH 3/4] Updated to populate on dev --- app/status/healthcheck.py | 5 +---- app/version.py | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/app/status/healthcheck.py b/app/status/healthcheck.py index a38cfca8e..6f5562a7e 100644 --- a/app/status/healthcheck.py +++ b/app/status/healthcheck.py @@ -22,16 +22,13 @@ def show_status(): def get_api_version(): - travis_commit = 'n/a' - travis_job_number = 'n/a' - build_time = "n/a" try: travis_commit = version.__travis_commit__ travis_job_number = version.__travis_job_number__ build_time = version.__time__ + return travis_commit, travis_job_number, build_time except: pass - return travis_commit, travis_job_number, build_time def get_db_version(): diff --git a/app/version.py b/app/version.py index d147dcf6d..1defd614d 100644 --- a/app/version.py +++ b/app/version.py @@ -1,3 +1,3 @@ -__travis_commit__ = "" -__time__ = "" -__travis_job_number__ = "" +__travis_commit__ = "dev" +__time__ = "dev" +__travis_job_number__ = "dev" From 5a2cf1baca7f9d4bf9e658d26d131a6a3571a7d6 Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Thu, 3 Mar 2016 15:38:22 +0000 Subject: [PATCH 4/4] Appeased pep8 --- app/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index b76836c08..3edf97fc8 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -82,9 +82,10 @@ def init_app(app): def email_safe(string): return "".join([ - character.lower() if character.isalnum() or character == "." else "" - for character in re.sub("\s+", ".", string.strip()) - ]) + character.lower() + if character.isalnum() or character == "." + else "" for character in re.sub("\s+", ".", string.strip()) + ]) def create_uuid():