From 8a66432c9217ebd3b91892faac2c127988e3b3eb Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Thu, 3 Feb 2022 17:36:58 +0100
Subject: [PATCH] Update vampir-mitglieder

Since uwsgi tasks are broken, use celery (with redis) instead
---
 uwsgi-python/tasks/apps/vampir-mitglieder.yml | 39 +++++++++++++++++++
 .../apps/vampir-mitglieder-celery.service.j2  | 14 +++++++
 .../templates/apps/vampir-mitglieder.j2       |  2 +-
 uwsgi-python/vars/vampir-mitglieder.yml       |  4 +-
 4 files changed, 56 insertions(+), 3 deletions(-)
 create mode 100644 uwsgi-python/templates/apps/vampir-mitglieder-celery.service.j2

diff --git a/uwsgi-python/tasks/apps/vampir-mitglieder.yml b/uwsgi-python/tasks/apps/vampir-mitglieder.yml
index 8b9227f..6a6ff66 100644
--- a/uwsgi-python/tasks/apps/vampir-mitglieder.yml
+++ b/uwsgi-python/tasks/apps/vampir-mitglieder.yml
@@ -1,5 +1,22 @@
 ---
 
+# https://github.com/ansible/ansible/issues/42983
+- name: ensure there exists a .ansible folder
+  file:
+    path: "{{app_path}}/.ansible"
+    state: directory
+    owner: "{{app_user}}"
+    group: "{{app_group}}"
+
+- name: ensure data model upgrades are applied  # noqa 301
+  command: "{{app_venv}}/bin/flask db upgrade"
+  args:
+    chdir: "{{app_path}}"
+  become: true
+  become_user: "{{app_user}}"
+  notify:
+    - "restart uwsgi instance {{app.instance}}"
+
 - name: ensure we have a folder for invoices
   file:
     path: "{{ app_path }}/rechnungen"
@@ -7,3 +24,25 @@
     owner: "{{ app_user }}"
     group: "{{ app_group }}"
     mode: '0750'
+
+- name: ensure the celery unit file exists
+  template:
+    src: apps/vampir-mitglieder-celery.service.j2
+    dest: "/etc/systemd/system/{{ app_name }}-celery.service"
+    owner: root
+    group: root
+    mode: '0644'
+  notify:
+    - reload systemd service files
+    - "restart uwsgi instance {{app.instance}}"
+
+- name: ensure the celery service is enabled
+  service:
+    name: "{{app_name}}-celery"
+    enabled: true
+    state: started
+
+- name: ensure the folder from above is not present anymore
+  file:
+    path: "{{app_path}}/.ansible"
+    state: absent
diff --git a/uwsgi-python/templates/apps/vampir-mitglieder-celery.service.j2 b/uwsgi-python/templates/apps/vampir-mitglieder-celery.service.j2
new file mode 100644
index 0000000..338d34a
--- /dev/null
+++ b/uwsgi-python/templates/apps/vampir-mitglieder-celery.service.j2
@@ -0,0 +1,14 @@
+[Unit]
+Description={{ app_name }}-Celery
+After=network.target
+
+[Service]
+User={{ app_user }}
+Group={{ app_group }}
+WorkingDirectory={{ app_path }}
+Environment=VIRTUAL_ENV="{{ app_path }}"
+ExecStart={{ app_venv }}/bin/celery -A app.celery worker --loglevel=DEBUG --concurrency={{ vampir_mitglieder_celery_concurrency }}
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/uwsgi-python/templates/apps/vampir-mitglieder.j2 b/uwsgi-python/templates/apps/vampir-mitglieder.j2
index b844ff3..99f0847 100644
--- a/uwsgi-python/templates/apps/vampir-mitglieder.j2
+++ b/uwsgi-python/templates/apps/vampir-mitglieder.j2
@@ -17,4 +17,4 @@ SENDER_MAIL_ADDRESS = "{{ app_sender_mail_address }}"
 MAIL_TIMEOUT = 10
 MAIL_USE_LOCALTIME = True
 
-NO_SPOOLER = False
+CELERY_BROKER_URL = "{{ vampir_mitglieder_celery_broker }}"
diff --git a/uwsgi-python/vars/vampir-mitglieder.yml b/uwsgi-python/vars/vampir-mitglieder.yml
index 4e5c8d2..b09a469 100644
--- a/uwsgi-python/vars/vampir-mitglieder.yml
+++ b/uwsgi-python/vars/vampir-mitglieder.yml
@@ -39,5 +39,5 @@ app_mail_server: "mail.fsmpi.rwth-aachen.de"
 app_testing_mails: "vampir-vorstand@fsmpi.rwth-aachen.de"
 app_sender_mail_address: "vampir-vorstand@fsmpi.rwth-aachen.de"
 
-app_spooler: true
-app_spooler_dir: "{{app_path}}/spooler"
+vampir_mitglieder_celery_broker: 'redis://localhost:6379/1'
+vampir_mitglieder_celery_concurrency: 2
-- 
GitLab