[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.
This commit is contained in:
Michal Konecny
2025-08-13 15:28:03 +02:00
parent 9b5371fa08
commit b82f406da8
6 changed files with 167 additions and 2 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 %}

View File

@@ -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 <https://www.gnu.org/licenses/>.
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",
}