From 010377f72e8fdcbfade450d85a024c6c910da643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kone=C4=8Dn=C3=BD?= Date: Mon, 18 Jan 2021 11:47:22 +0100 Subject: [PATCH] release-monitoring: wait till the db head is newest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michal Konečný --- .../files/deploymentconfig.yml | 20 ++++++++-------- .../release-monitoring/templates/check_db.py | 23 +++++++++++++++++++ .../templates/configmap.yml | 4 ++-- .../templates/wait_for_web_service.sh | 10 -------- 4 files changed, 35 insertions(+), 22 deletions(-) create mode 100644 roles/openshift-apps/release-monitoring/templates/check_db.py delete mode 100644 roles/openshift-apps/release-monitoring/templates/wait_for_web_service.sh diff --git a/roles/openshift-apps/release-monitoring/files/deploymentconfig.yml b/roles/openshift-apps/release-monitoring/files/deploymentconfig.yml index ca0dbcf367..e84d0a6f75 100644 --- a/roles/openshift-apps/release-monitoring/files/deploymentconfig.yml +++ b/roles/openshift-apps/release-monitoring/files/deploymentconfig.yml @@ -115,13 +115,13 @@ items: recreateParams: timeoutSeconds: 600 mid: - failurePolicy: Abort + failurePolicy: Retry execNewPod: containerName: release-monitoring-web - command: - - /bin/bash - args: - - /etc/anitya/wait_for_web_service.sh + command: [ python3, "/etc/anitya/check_db.py" ] + env: + - name: ANITYA_WEB_CONFIG + value: /etc/anitya/anitya.toml volumes: - config-volume resources: {} @@ -203,13 +203,13 @@ items: recreateParams: timeoutSeconds: 600 mid: - failurePolicy: Abort + failurePolicy: Retry execNewPod: containerName: release-monitoring-web - command: - - /bin/bash - args: - - /etc/anitya/wait_for_web_service.sh + command: [ python3, "/etc/anitya/check_db.py" ] + env: + - name: ANITYA_WEB_CONFIG + value: /etc/anitya/anitya.toml volumes: - config-volume resources: {} diff --git a/roles/openshift-apps/release-monitoring/templates/check_db.py b/roles/openshift-apps/release-monitoring/templates/check_db.py new file mode 100644 index 0000000000..9d5989af26 --- /dev/null +++ b/roles/openshift-apps/release-monitoring/templates/check_db.py @@ -0,0 +1,23 @@ +#!/bin/python3 + +from alembic import config, script +from alembic.runtime import migration +from sqlalchemy import engine + +from anitya.config import config + + +def check_current_head(alembic_cfg, connectable): + # type: (config.Config, engine.Engine) -> bool + directory = script.ScriptDirectory.from_config(alembic_cfg) + with connectable.begin() as connection: + context = migration.MigrationContext.configure(connection) + return set(context.get_current_heads()) == set(directory.get_heads()) + +if __name__ == "__main__": + # Main + engine = create_engine(config["DB_URL"], echo=config.get("SQL_DEBUG", False)) + cfg = config.Config("/etc/anitya/alembic.ini") + if(not check_current_head(cfg, e)): + print("ERROR: Current database head is not newest") + exit(1) diff --git a/roles/openshift-apps/release-monitoring/templates/configmap.yml b/roles/openshift-apps/release-monitoring/templates/configmap.yml index e7c9ea4c39..11ec0c15a2 100644 --- a/roles/openshift-apps/release-monitoring/templates/configmap.yml +++ b/roles/openshift-apps/release-monitoring/templates/configmap.yml @@ -21,8 +21,8 @@ items: {{ load_file('httpd.conf') | indent(6) }} anitya.wsgi: |- {{ load_file('anitya.wsgi') | indent(6) }} - wait_for_web_service: |- - {{ load_file('wait_for_web_service.sh') | indent(6) }} + check_db.py: |- + {{ load_file('check_db.py') | indent(6) }} - apiVersion: v1 kind: ConfigMap metadata: diff --git a/roles/openshift-apps/release-monitoring/templates/wait_for_web_service.sh b/roles/openshift-apps/release-monitoring/templates/wait_for_web_service.sh deleted file mode 100644 index 1aa536470f..0000000000 --- a/roles/openshift-apps/release-monitoring/templates/wait_for_web_service.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - - -{% if env == 'staging' %} -until $(curl --output /dev/null --silent --head --fail https://stg.release-monitoring.org); do -{% else %} -until $(curl --output /dev/null --silent --head --fail https://release-monitoring.org); do -{% endif %} - sleep 5 -done