W2FM: adapt to the switch to fastapi

Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
Aurélien Bompard 2024-08-13 11:00:33 +02:00
parent 425277ffa4
commit 584f878fcf
No known key found for this signature in database
GPG key ID: 31584CFEB9BF64AD
6 changed files with 65 additions and 68 deletions

View file

@ -1,38 +0,0 @@
[flaskapp]
DEBUG = false
TESTING = false
SQLALCHEMY_DATABASE_URI = "postgresql://webhook2fedmsg:{{ (env == 'staging')|ternary(webhook2fedmsg_stg_db_password, webhook2fedmsg_prod_db_password) }}@db01{{ env_suffix }}.iad2.fedoraproject.org/webhook2fedmsg"
SECRET_KEY = "{{ (env == 'staging')|ternary(webhook2fedmsg_stg_secret_key, webhook2fedmsg_prod_secret_key) }}"
PERMANENT_SESSION_LIFETIME = 604800
SESSION_COOKIE_HTTPONLY = true
SESSION_COOKIE_SECURE = true
PREFERRED_URL_SCHEME = "https"
[flaskapp.logsconf]
version = 1
disable_existing_loggers = false
[flaskapp.logsconf.handlers]
[flaskapp.logsconf.handlers.wsgi]
class = "logging.StreamHandler"
stream = "ext://flask.logging.wsgi_errors_stream"
level = "INFO"
formatter = "default"
[flaskapp.logsconf.formatters]
[flaskapp.logsconf.formatters.default]
format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
datefmt = "[%Y-%m-%d %I:%M:%S %z]"
[flaskapp.logsconf.root]
handlers = ["wsgi"]
level = "INFO"
[flaskapp.logsconf.loggers]
[flaskapp.logsconf.loggers.werkzeug]
handlers = ["wsgi"]
level = "INFO"
propagate = false

View file

@ -11,18 +11,10 @@ items:
labels:
app: webhook2fedmsg
data:
config.toml: |-
{{ load_file('config.toml') | indent(6) }}
- apiVersion: v1
kind: ConfigMap
metadata:
name: wsgi-script
labels:
app: webhook2fedmsg
data:
wsgi.py: |-
{{ load_file('wsgi.py') | indent(6) }}
__init__.py: ""
webhook-to-fedora-messaging.cfg: |-
{{ load_file('w2fm.cfg') | indent(6) }}
logging.yaml: |-
{{ load_file('logging.yaml') | indent(6) }}
- apiVersion: v1
kind: ConfigMap
metadata:

View file

@ -16,7 +16,7 @@ spec:
recreateParams:
mid:
execNewPod:
command: [/opt/app-root/bin/flask, db, sync]
command: [/opt/app-root/bin/w2fm, setup]
containerName: app
volumes:
- config
@ -31,19 +31,16 @@ spec:
- image: webhook2fedmsg:latest
name: app
env:
- name: APP_MODULE
value: "deploy.wsgi"
- name: W2FM_APPCONFIG
value: "/etc/webhook2fedmsg/config.toml"
- name: W2FM_CONFIG
value: "/etc/webhook-to-fedora-messaging/webhook-to-fedora-messaging.cfg"
- name: APP_SCRIPT
value: "uvicorn --host 0.0.0.0 --port 8080 --log-config /etc/webhook-to-fedora-messaging/logging.yaml --factory webhook_to_fedora_messaging.main:create_app"
ports:
- containerPort: 8080
protocol: TCP
volumeMounts:
- name: config
mountPath: "/etc/webhook2fedmsg"
readOnly: true
- name: wsgi-script
mountPath: "/opt/app-root/src/deploy"
mountPath: "/etc/webhook-to-fedora-messaging"
readOnly: true
- name: fedora-messaging-config
mountPath: "/etc/fedora-messaging"
@ -65,22 +62,19 @@ spec:
# initialDelaySeconds: 5
# periodSeconds: 60
# httpGet:
# path: "/healthz/ready"
# path: "/api/v1/healthz/ready"
# port: 8080
# livenessProbe:
# timeoutSeconds: 10
# initialDelaySeconds: 3
# periodSeconds: 60
# httpGet:
# path: "/healthz/live"
# path: "/api/v1/healthz/live"
# port: 8080
volumes:
- name: config
configMap:
name: config
- name: wsgi-script
configMap:
name: wsgi-script
- name: fedora-messaging-config
configMap:
name: fedora-messaging-config

View file

@ -0,0 +1,49 @@
version: 1
disable_existing_loggers: false
formatters:
standard:
format: "%(asctime)s [%(levelname)s] %(message)s"
datefmt: "[%Y-%m-%d %I:%M:%S %z]"
uvicorn:
(): "uvicorn.logging.DefaultFormatter"
fmt: "%(asctime)s [%(levelname)s] %(message)s"
datefmt: "[%Y-%m-%d %I:%M:%S %z]"
use_colors: false
access:
(): "uvicorn.logging.AccessFormatter"
fmt: "%(asctime)s [%(levelname)s] %(client_addr)s - '%(request_line)s' %(status_code)s"
datefmt: "[%Y-%m-%d %I:%M:%S %z]"
handlers:
console:
level: "DEBUG"
formatter: "standard"
class: "logging.StreamHandler"
stream: "ext://sys.stdout"
uvicorn:
level: "DEBUG"
formatter: "uvicorn"
class: "logging.StreamHandler"
stream: "ext://sys.stdout"
access:
level: "DEBUG"
formatter: "access"
class: "logging.StreamHandler"
stream: "ext://sys.stdout"
loggers:
uvicorn:
handlers: ["uvicorn"]
level: "INFO"
propagate: false
uvicorn.error:
level": "INFO"
uvicorn.access:
handlers: ["access"]
level: "INFO"
propagate: false
root:
level: "INFO"
handlers: ["console"]

View file

@ -0,0 +1,4 @@
DATABASE__SQLALCHEMY__URL="postgresql://webhook2fedmsg:{{ (env == 'staging')|ternary(webhook2fedmsg_stg_db_password, webhook2fedmsg_prod_db_password) }}@db01{{ env_suffix }}.iad2.fedoraproject.org/webhook2fedmsg"
SESSION_SECRET="{{ (env == 'staging')|ternary(webhook2fedmsg_stg_secret_key, webhook2fedmsg_prod_secret_key) }}"
FASJSON_URL="https://fasjson{{ env_suffix }}.fedoraproject.org"
OIDC__PROVIDER_URL="https://id{{ env_suffix }}.fedoraproject.org/openidc"

View file

@ -1,4 +0,0 @@
from werkzeug.middleware.proxy_fix import ProxyFix
from webhook_to_fedora_messaging.main import create_app
application = create_app()
application.wsgi_app = ProxyFix(application.wsgi_app, x_proto=1, x_host=1)