From c2eb0e96ba7cfdc56098f1b53f6386e35c7feacf Mon Sep 17 00:00:00 2001
From: Michael Jerger <michael.jerger@meissa-gmbh.de>
Date: Mon, 17 Feb 2025 15:59:23 +0100
Subject: [PATCH] add moderator election

---
 src/main/cljc/dda/c4k_jitsi/core.cljc              |  1 +
 src/main/cljc/dda/c4k_jitsi/jitsi.cljc             | 14 +++-----------
 ...ment.yaml => modelector-config-deployment.yaml} | 14 ++++++--------
 ...service.yaml => modelector-config-service.yaml} |  8 ++++----
 src/test/cljc/dda/c4k_jitsi/jitsi_test.cljc        |  5 +++++
 5 files changed, 19 insertions(+), 23 deletions(-)
 rename src/main/resources/jitsi/{modelector-deployment.yaml => modelector-config-deployment.yaml} (66%)
 rename src/main/resources/jitsi/{modelector-service.yaml => modelector-config-service.yaml} (57%)

diff --git a/src/main/cljc/dda/c4k_jitsi/core.cljc b/src/main/cljc/dda/c4k_jitsi/core.cljc
index 91cb32e..5ab6ffb 100644
--- a/src/main/cljc/dda/c4k_jitsi/core.cljc
+++ b/src/main/cljc/dda/c4k_jitsi/core.cljc
@@ -42,6 +42,7 @@
            (jitsi/jibri-config resolved-config)
            (jitsi/etherpad-config resolved-config)
            (jitsi/excalidraw-config resolved-config)
+           (jitsi/moderator-elector-config resolved-config)
            (ing/generate-ingress-and-cert (merge
                                            {:service-name "jitsi-meet-web"
                                             :service-port 80
diff --git a/src/main/cljc/dda/c4k_jitsi/jitsi.cljc b/src/main/cljc/dda/c4k_jitsi/jitsi.cljc
index 9545d16..4a12889 100644
--- a/src/main/cljc/dda/c4k_jitsi/jitsi.cljc
+++ b/src/main/cljc/dda/c4k_jitsi/jitsi.cljc
@@ -129,16 +129,8 @@
     [(load-and-adjust-namespace "jitsi/excalidraw-config-service.yaml" namespace)
      (load-and-adjust-namespace "jitsi/excalidraw-config-deployment.yaml" namespace)]))
 
-(defn-spec generate-modelector-service cp/map-or-seq?
+(defn-spec moderator-elector-config cp/map-or-seq?
   [config config?]
   (let [{:keys [namespace]} config]
-    (->
-     (yaml/load-as-edn "jitsi/modelector-service.yaml")
-     (cm/replace-all-matching "NAMESPACE" namespace))))
-
-(defn-spec generate-modelector-deployment cp/map-or-seq?
-  [config config?]
-  (let [{:keys [fqdn namespace]} config]
-    (->
-     (yaml/load-as-edn "jitsi/modelector-deployment.yaml")
-     (cm/replace-all-matching "NAMESPACE" namespace))))
+    [(load-and-adjust-namespace "jitsi/modelector-config-service.yaml" namespace)
+     (load-and-adjust-namespace "jitsi/modelector-config-deployment.yaml" namespace)]))
diff --git a/src/main/resources/jitsi/modelector-deployment.yaml b/src/main/resources/jitsi/modelector-config-deployment.yaml
similarity index 66%
rename from src/main/resources/jitsi/modelector-deployment.yaml
rename to src/main/resources/jitsi/modelector-config-deployment.yaml
index 4e0d571..8c73c1a 100644
--- a/src/main/resources/jitsi/modelector-deployment.yaml
+++ b/src/main/resources/jitsi/modelector-config-deployment.yaml
@@ -1,24 +1,22 @@
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  labels:
-    app: modelector
-  name: modelector
+  name: moderator-elector
   namespace: NAMESPACE
+  labels:
+    app.kubernetes.io/name: moderator-elector
 spec:
   replicas: 1
-  strategy:
-    type: Recreate
   selector:
     matchLabels:
-      app: modelector
+      app.kubernetes.io/name: moderator-elector
   template:
     metadata:
       labels:
-        app: modelector
+        app.kubernetes.io/name: moderator-elector
     spec:
       containers:
-        - name: modelector
+        - name: moderator-elector
           image: domaindrivenarchitecture/moderator-election-vaadin_fullstack
           imagePullPolicy: IfNotPresent
           env:
diff --git a/src/main/resources/jitsi/modelector-service.yaml b/src/main/resources/jitsi/modelector-config-service.yaml
similarity index 57%
rename from src/main/resources/jitsi/modelector-service.yaml
rename to src/main/resources/jitsi/modelector-config-service.yaml
index 8d84789..bd65061 100644
--- a/src/main/resources/jitsi/modelector-service.yaml
+++ b/src/main/resources/jitsi/modelector-config-service.yaml
@@ -1,14 +1,14 @@
 apiVersion: v1
 kind: Service
 metadata:
-  labels:
-    service: modelector
-  name: modelector
+  name: moderator-elector
   namespace: NAMESPACE
+  labels:
+    app.kubernetes.io/name: moderator-elector
 spec:
   ports:
     - name: "http"
       port: 80
       targetPort: 8080
   selector:
-    app: modelector
\ No newline at end of file
+    app.kubernetes.io/name: moderator-elector
\ No newline at end of file
diff --git a/src/test/cljc/dda/c4k_jitsi/jitsi_test.cljc b/src/test/cljc/dda/c4k_jitsi/jitsi_test.cljc
index d99f446..d4dd47f 100644
--- a/src/test/cljc/dda/c4k_jitsi/jitsi_test.cljc
+++ b/src/test/cljc/dda/c4k_jitsi/jitsi_test.cljc
@@ -105,3 +105,8 @@
                  {:fqdn "xy.xy.xy"
                   :namespace "jitsi"})))))
 
+(deftest should-generate-moderator-elector
+  (is (= 2
+         (count (cut/moderator-elector-config
+                 {:fqdn "xy.xy.xy"
+                  :namespace "jitsi"})))))