diff --git a/playbooks/openshift-apps/kerneltest.yml b/playbooks/openshift-apps/kerneltest.yml index 5fef23b9b7..9d2c2c7809 100644 --- a/playbooks/openshift-apps/kerneltest.yml +++ b/playbooks/openshift-apps/kerneltest.yml @@ -66,7 +66,7 @@ - role: openshift/route app: kerneltest routename: kerneltest - host: "kerneltest{{ env_suffix }}.fedoraproject.org" + host: "kerneltest.apps.ocp{{ env_suffix }}.fedoraproject.org" serviceport: web servicename: kerneltest-web diff --git a/roles/openshift-apps/kerneltest/files/alembic.ini b/roles/openshift-apps/kerneltest/files/alembic.ini new file mode 100644 index 0000000000..7f61530ad0 --- /dev/null +++ b/roles/openshift-apps/kerneltest/files/alembic.ini @@ -0,0 +1,54 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts +script_location = /opt/app-root/src/alembic + +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +{% if env == 'staging' %} +sqlalchemy.url = postgresql://{{ kerneltest_stg_db_user }}:{{ kerneltest_stg_db_pass }}@{{ kerneltest_stg_db_host }}/kerneltest +{% else %} +sqlalchemy.url = postgresql://{{ kerneltest_db_user }}:{{ kerneltest_db_pass }}@{{ kerneltest_db_host }}/kerneltest +{% endif %} + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/roles/openshift-apps/kerneltest/files/alembic_upgrade.sh b/roles/openshift-apps/kerneltest/files/alembic_upgrade.sh new file mode 100644 index 0000000000..4b0704978b --- /dev/null +++ b/roles/openshift-apps/kerneltest/files/alembic_upgrade.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +pip install alembic +alembic -c /etc/alembic-upgrade-script/alembic.ini upgrade head diff --git a/roles/openshift-apps/kerneltest/files/deploymentconfig.yml b/roles/openshift-apps/kerneltest/files/deploymentconfig.yml index 40aa70ce81..a542d054eb 100644 --- a/roles/openshift-apps/kerneltest/files/deploymentconfig.yml +++ b/roles/openshift-apps/kerneltest/files/deploymentconfig.yml @@ -1,66 +1,100 @@ --- apiVersion: v1 -kind: List -metadata: {} -items: -- apiVersion: v1 - kind: DeploymentConfig - metadata: - labels: - app: kerneltest - service: web - name: kerneltest-web - spec: - replicas: 1 - selector: - deploymentconfig: kerneltest-web - strategy: - resources: {} - template: - metadata: - labels: - app: kerneltest - deploymentconfig: kerneltest-web - spec: - containers: - - name: kerneltest-web - image: docker-registry.default.svc:5000/kerneltest/kerneltest:latest +kind: DeploymentConfig +metadata: + labels: + app: kerneltest + service: kerneltest + name: kerneltest +spec: + replicas: 1 + selector: + app: kerneltest + deploymentconfig: kerneltest + strategy: + type: Recreate + recreateParams: + mid: + failurePolicy: Abort + execNewPod: + containerName: kerneltest + command: ["/opt/app-root/config/alembic_upgrade.sh"] env: - - name: KERNELTEST_CONFIG - value: /etc/kerneltest/config.toml - - name: APP_MODULE - value: "kerneltest.wsgi:application" - ports: - - containerPort: 8080 - resources: {} - volumeMounts: - - name: config-volume - mountPath: /etc/kerneltest - readOnly: true - readinessProbe: - timeoutSeconds: 1 - initialDelaySeconds: 5 - httpGet: - path: / - port: 8080 - livenessProbe: - timeoutSeconds: 1 - initialDelaySeconds: 30 - httpGet: - path: / - port: 8080 - volumes: - - name: config-volume - configMap: - name: kerneltest-configmap - triggers: - - imageChangeParams: - automatic: true - containerNames: - - kerneltest-web - from: - kind: ImageStreamTag - name: kerneltest:latest - namespace: kerneltest - type: ImageChange - - type: ConfigChange + - name: PYTHONPATH + value: /opt/app-root/src + volumes: + - kerneltest-config-volume + - kerneltest-secret-volume + - ipa-config-volume + template: + metadata: + labels: + app: kerneltest + deploymentconfig: kerneltest + spec: + containers: + - name: kerneltest + image: kerneltest:latest + ports: + - containerPort: 8080 + resources: {} + env: + - name: GUNICORN_CMD_ARGS + value: "--bind=0.0.0.0:8080" + - name: KERNELTEST_CONFIG + value: /etc/kerneltest-config/config.toml + volumeMounts: + - name: kerneltest-config-volume + mountPath: /etc/kerneltest-config + readOnly: true + - name: alembic-upgrade-script-volume + mountPath: /etc/alembic-upgrade-script + readOnly: true + - name: wsgi-script-volume + mountPath: "/opt/app-root/src/deploy" + readOnly: true + - name: kerneltest-secrets-volume + mountPath: /etc/kerneltest-secrets + readOnly: true + - name: ipa-config-volume + mountPath: /etc/ipa + readOnly: true + readinessProbe: + timeoutSeconds: 1 + initialDelaySeconds: 5 + httpGet: + path: / + port: 8080 + livenessProbe: + timeoutSeconds: 1 + initialDelaySeconds: 30 + httpGet: + path: / + port: 8080 + volumes: + - name: kerneltest-config-volume + configMap: + name: kerneltest-config-map + - name: alembic-upgrade-script-volume + configMap: + name: alembic-upgrade-script + - name: wsgi-script-volume + configMap: + name: wsgi-script + - name: kerneltest-secrets-volume + secret: + secretName: kerneltest-secrets + - name: ipa-config-volume + configMap: + name: ipa-client-config + + triggers: + - type: ConfigChange + - type: ImageChange + imageChangeParams: + automatic: true + containerNames: + - elections + from: + kind: ImageStreamTag + name: elections:latest \ No newline at end of file diff --git a/roles/openshift-apps/kerneltest/files/wsgi.py b/roles/openshift-apps/kerneltest/files/wsgi.py new file mode 100644 index 0000000000..69597b075e --- /dev/null +++ b/roles/openshift-apps/kerneltest/files/wsgi.py @@ -0,0 +1 @@ +from fedora_elections import APP as application \ No newline at end of file diff --git a/roles/openshift-apps/kerneltest/templates/buildconfig.yml b/roles/openshift-apps/kerneltest/templates/buildconfig.yml index 162307aa1c..2f2459cb98 100644 --- a/roles/openshift-apps/kerneltest/templates/buildconfig.yml +++ b/roles/openshift-apps/kerneltest/templates/buildconfig.yml @@ -12,14 +12,14 @@ spec: source: type: Git git: - uri: https://github.com/jmflinuxtx/kerneltest-harness.git + uri: https://github.com/fedora-infra/kerneltest.git strategy: type: Source sourceStrategy: from: kind: ImageStreamTag namespace: openshift - name: python:3.6 + name: python:3.10 triggers: - type: ConfigChange - type: ImageChange diff --git a/roles/openshift-apps/kerneltest/templates/config.toml b/roles/openshift-apps/kerneltest/templates/config.toml index 4cb38152ff..228449e7be 100644 --- a/roles/openshift-apps/kerneltest/templates/config.toml +++ b/roles/openshift-apps/kerneltest/templates/config.toml @@ -6,4 +6,4 @@ SECRET_KEY = "{{ kerneltest_secretkey }}" DB_URL = "postgresql://{{ kerneltest_db_user }}:{{ kerneltest_db_pass }}@{{ kerneltest_db_host }}/kerneltest" {% endif %} ADMIN_GROUP = ["sysadmin-kernel", "sysadmin-main"] -OIDC_CLIENT_SECRETS = "/etc/kerneltest/client_secrets.json" +OIDC_CLIENT_SECRETS = "/etc/kerneltest-config/client_secrets.json" diff --git a/roles/openshift-apps/kerneltest/templates/configmap.yml b/roles/openshift-apps/kerneltest/templates/configmap.yml index 057cc2bda0..8e2843f4f5 100644 --- a/roles/openshift-apps/kerneltest/templates/configmap.yml +++ b/roles/openshift-apps/kerneltest/templates/configmap.yml @@ -1,13 +1,36 @@ {% macro load_file(filename) %}{% include filename %}{%- endmacro -%} --- apiVersion: v1 -kind: ConfigMap -metadata: - name: kerneltest-configmap - labels: - app: kerneltest -data: - config.toml: |- - {{ load_file('config.toml') | indent }} - client_secrets.json: |- - {{ load_file('client_secrets.json') | indent }} +kind: List +metadata: {} +items: +- apiVersion: v1 + kind: ConfigMap + metadata: + name: kerneltest-config-map + labels: + app: kerneltest + data: + config.toml: |- + {{ load_file('kerneltest.toml') | indent }} + client_secrets.json: |- + {{ load_file('client_secrets.json') | indent }} +- apiVersion: v1 + kind: ConfigMap + metadata: + name: alembic-upgrade-script + labels: + app: kerneltest + data: + alembic_upgrade.sh: |- + {{ load_file('alembic_upgrade.sh') | indent }} +- apiVersion: v1 + kind: ConfigMap + metadata: + name: wsgi-script + labels: + app: kerneltest + data: + alembic_upgrade.sh: |- + {{ load_file('wsgi.py') | indent }} +