From b82f406da86f1fd1fb4b90ea6a761da0aed9209b Mon Sep 17 00:00:00 2001 From: Michal Konecny Date: Wed, 13 Aug 2025 15:28:03 +0200 Subject: [PATCH] [mdapi] Only reflect the GO changes on staging Production is not ready yet to work with that changes. Let us separate them using jinja templating. --- playbooks/openshift-apps/mdapi.yml | 4 +- .../mdapi/templates/configmap.yml.j2 | 22 +++++ .../{files/cron.yml => templates/cron.yml.j2} | 22 +++++ .../deploymentconfig.yml.j2} | 18 ++++ .../openshift-apps/mdapi/templates/mdapi.cfg | 10 ++ .../mdapi/templates/myconfig.py | 93 +++++++++++++++++++ 6 files changed, 167 insertions(+), 2 deletions(-) rename roles/openshift-apps/mdapi/{files/cron.yml => templates/cron.yml.j2} (71%) rename roles/openshift-apps/mdapi/{files/deploymentconfig.yml => templates/deploymentconfig.yml.j2} (71%) create mode 100644 roles/openshift-apps/mdapi/templates/mdapi.cfg create mode 100644 roles/openshift-apps/mdapi/templates/myconfig.py diff --git a/playbooks/openshift-apps/mdapi.yml b/playbooks/openshift-apps/mdapi.yml index b0902cd9e5..230da9c82f 100644 --- a/playbooks/openshift-apps/mdapi.yml +++ b/playbooks/openshift-apps/mdapi.yml @@ -61,7 +61,7 @@ - role: openshift/object object_app: mdapi - object_file: cron.yml + object_template: cron.yml object_objectname: cron.yml tags: - cron-job @@ -88,7 +88,7 @@ - role: openshift/object object_app: mdapi - object_file: deploymentconfig.yml + object_template: deploymentconfig.yml object_objectname: deploymentconfig.yml - role: openshift/rollout diff --git a/roles/openshift-apps/mdapi/templates/configmap.yml.j2 b/roles/openshift-apps/mdapi/templates/configmap.yml.j2 index 84eb27f09d..c087b182ec 100644 --- a/roles/openshift-apps/mdapi/templates/configmap.yml.j2 +++ b/roles/openshift-apps/mdapi/templates/configmap.yml.j2 @@ -1,4 +1,26 @@ {% macro load_file(filename) %}{% include filename %}{%- endmacro -%} +{% if env == "staging" %} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: mdapi-configmap + labels: + app: mdapi +data: + mdapi.cfg: |- + {{ load_file('mdapi.cfg') | indent }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: mdapi-myconfigpy-configmap + labels: + app: mdapi +data: + myconfig.py: |- + {{ load_file('myconfig.py') | indent }} +{% endif %} --- apiVersion: v1 kind: ConfigMap diff --git a/roles/openshift-apps/mdapi/files/cron.yml b/roles/openshift-apps/mdapi/templates/cron.yml.j2 similarity index 71% rename from roles/openshift-apps/mdapi/files/cron.yml rename to roles/openshift-apps/mdapi/templates/cron.yml.j2 index 7254c052dd..f3fa2410b8 100644 --- a/roles/openshift-apps/mdapi/files/cron.yml +++ b/roles/openshift-apps/mdapi/templates/cron.yml.j2 @@ -18,8 +18,20 @@ spec: containers: - name: mdapi image: image-registry.openshift-image-registry.svc:5000/mdapi/mdapi:latest +{% if env == "staging" %} command: ["bash", "-c", "/metasource/meta -loglevel info -location /var/tmp database"] +{% else %} + command: ["bash", "-c", "/usr/local/bin/mdapi --conffile /etc/mdapi/confdata/myconfig.py database"] +{% endif %} volumeMounts: +{% if env != "staging" %} + - name: myconfigpy-volume + mountPath: /etc/mdapi/confdata/ + readOnly: true + - name: config-volume + mountPath: /etc/mdapi + readOnly: true +{% endif %} - name: data-volume mountPath: /var/tmp - name: fedora-messaging-config-volume @@ -36,6 +48,16 @@ spec: readOnly: true restartPolicy: Never volumes: +{% if env != "staging" %} + - name: myconfigpy-volume + configMap: + defaultMode: 420 + name: mdapi-myconfigpy-configmap + - name: config-volume + configMap: + defaultMode: 420 + name: mdapi-configmap +{% endif %} - name: data-volume persistentVolumeClaim: claimName: mdapi-storage diff --git a/roles/openshift-apps/mdapi/files/deploymentconfig.yml b/roles/openshift-apps/mdapi/templates/deploymentconfig.yml.j2 similarity index 71% rename from roles/openshift-apps/mdapi/files/deploymentconfig.yml rename to roles/openshift-apps/mdapi/templates/deploymentconfig.yml.j2 index 968733d363..b7439a2017 100644 --- a/roles/openshift-apps/mdapi/files/deploymentconfig.yml +++ b/roles/openshift-apps/mdapi/templates/deploymentconfig.yml.j2 @@ -20,13 +20,23 @@ spec: containers: - name: mdapi image: registry/mdapi:latest +{% if env == "staging" %} command: ["/metasource/meta"] args: ["-location", "/var/tmp", "-loglevel", "info", "dispense"] +{% endif %} ports: - containerPort: 8080 volumeMounts: - name: data-volume mountPath: /var/tmp/ +{% if env != "staging" %} + - name: myconfigpy-volume + mountPath: /etc/mdapi/confdata/ + readOnly: true + - name: config-volume + mountPath: /etc/mdapi + readOnly: true +{% endif %} readinessProbe: timeoutSeconds: 5 initialDelaySeconds: 60 @@ -43,6 +53,14 @@ spec: port: 8080 resources: volumes: +{% if env != "staging" %} + - name: config-volume + configMap: + name: mdapi-configmap + - name: myconfigpy-volume + configMap: + name: mdapi-myconfigpy-configmap +{% endif %} - name: data-volume persistentVolumeClaim: claimName: mdapi-storage diff --git a/roles/openshift-apps/mdapi/templates/mdapi.cfg b/roles/openshift-apps/mdapi/templates/mdapi.cfg new file mode 100644 index 0000000000..74aa9732a9 --- /dev/null +++ b/roles/openshift-apps/mdapi/templates/mdapi.cfg @@ -0,0 +1,10 @@ +HOST = '*' +PORT = '8080' +DL_VERIFY = False +{% if env == 'staging' %} +KOJI_REPO = 'https://koji.stg.fedoraproject.org/repos/' +DL_SERVER = 'http://dl.{{datacenter}}.fedoraproject.org' +{% else %} +KOJI_REPO = 'https://koji.fedoraproject.org/repos/' +DL_SERVER = 'http://dl.{{datacenter}}.fedoraproject.org' +{% endif %} diff --git a/roles/openshift-apps/mdapi/templates/myconfig.py b/roles/openshift-apps/mdapi/templates/myconfig.py new file mode 100644 index 0000000000..b6159d730f --- /dev/null +++ b/roles/openshift-apps/mdapi/templates/myconfig.py @@ -0,0 +1,93 @@ +""" +mdapi +Copyright (C) 2015-2022 Red Hat, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Any Red Hat trademarks that are incorporated in the source +code or documentation are not subject to the GNU General Public +License and may only be used or replicated with the express permission +of Red Hat, Inc. +""" + +""" +mdapi default configuration. +""" + +# url to the database server: +DB_FOLDER = "/var/tmp" + +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "standard": { + "format": "%(asctime)s [%(levelname)s] %(message)s", + "datefmt": "[%Y-%m-%d %I:%M:%S %z]", + }, + }, + "handlers": { + "console": { + "level": "INFO", + "formatter": "standard", + "class": "logging.StreamHandler", + "stream": "ext://sys.stdout", + }, + }, + # The root logger configuration; this is a catch-all configuration + # that applies to all log messages not handled by a different logger + "root": { + "level": "INFO", + "handlers": ["console"], + }, +} + +""" +Database fetching configuration +""" + +KOJI_REPO = "https://kojipkgs.fedoraproject.org/repos" +PKGDB2_URL = "https://admin.fedoraproject.org/pkgdb" +DL_SERVER = "https://dl.fedoraproject.org" + +# Enforce, or not, checking the SSL certs +PKGDB2_VERIFY = True + +# Valid for both koji and the download server +DL_VERIFY = True + +# Whether to publish to Fedora Messaging +{% if env == "staging" %} +PUBLISH_CHANGES = False +{% else %} +PUBLISH_CHANGES = True +{% endif %} + +# How long to wait between retries if processing failed +CRON_SLEEP = 30 + +repomd_xml_namespace = { + "repo": "http://linux.duke.edu/metadata/repo", + "rpm": "http://linux.duke.edu/metadata/rpm", +} + +""" +Application service configuration +""" + +APPSERVE = { + "logging": {"level": LOGGING["root"]["level"]}, + "bind": "0.0.0.0:8080", + "worker_class": "aiohttp.GunicornUVLoopWebWorker", +}