From 4d808590a6234eac17248f84e2040b59af7215f1 Mon Sep 17 00:00:00 2001
From: Michael Jerger <michael.jerger@meissa-gmbh.de>
Date: Mon, 10 Mar 2025 16:54:51 +0100
Subject: [PATCH 1/4] use load-and-adjust

---
 build.py                                      | 1 -
 project.clj                                   | 2 +-
 src/main/cljc/dda/c4k_keycloak/keycloak.cljc  | 7 +++----
 src/test/cljc/dda/c4k_keycloak/core_test.cljc | 2 +-
 4 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/build.py b/build.py
index 0ea62c5..781a199 100644
--- a/build.py
+++ b/build.py
@@ -160,7 +160,6 @@ def inst(project):
         check=True,
     )
     package_native(project)
-    
     run(
         "sudo install -m=755 target/graalvm/" + project.name + " /usr/local/bin/" + project.name + "",
         shell=True,
diff --git a/project.clj b/project.clj
index e6a8ff2..e35a186 100644
--- a/project.clj
+++ b/project.clj
@@ -5,7 +5,7 @@
             :url "https://www.apache.org/licenses/LICENSE-2.0.html"}
   :dependencies [[org.clojure/clojure "1.12.0"]
                  [org.clojure/tools.reader "1.5.1"]
-                 [org.domaindrivenarchitecture/c4k-common-clj "9.0.1"]]
+                 [org.domaindrivenarchitecture/c4k-common-clj "9.0.2-SNAPSHOT"]]
   :target-path "target/%s/"
   :source-paths ["src/main/cljc"
                  "src/main/clj"]
diff --git a/src/main/cljc/dda/c4k_keycloak/keycloak.cljc b/src/main/cljc/dda/c4k_keycloak/keycloak.cljc
index 71ed3d8..57193c3 100644
--- a/src/main/cljc/dda/c4k_keycloak/keycloak.cljc
+++ b/src/main/cljc/dda/c4k_keycloak/keycloak.cljc
@@ -8,7 +8,8 @@
    [dda.c4k-common.common :as cm]
    [dda.c4k-common.base64 :as b64]
    [dda.c4k-common.ingress :as ing]
-   [dda.c4k-common.predicate :as cp]))
+   [dda.c4k-common.predicate :as cp]
+   [dda.c4k-common.namespace :as ns]))
 
 (s/def ::fqdn cp/fqdn-string?)
 (s/def ::issuer cp/letsencrypt-issuer?)
@@ -35,9 +36,7 @@
 (defn-spec generate-configmap cp/map-or-seq?
   [config config?]
   (let [{:keys [namespace]} config]
-    (->
-     (yaml/load-as-edn "keycloak/configmap.yaml")
-     (cm/replace-all-matching "NAMESPACE" namespace))))
+    (ns/load-and-adjust-namespace "keycloak/configmap.yaml" namespace)))
 
 (defn-spec generate-service-headless cp/map-or-seq?
   [config config?]
diff --git a/src/test/cljc/dda/c4k_keycloak/core_test.cljc b/src/test/cljc/dda/c4k_keycloak/core_test.cljc
index 3b54199..9e95f43 100644
--- a/src/test/cljc/dda/c4k_keycloak/core_test.cljc
+++ b/src/test/cljc/dda/c4k_keycloak/core_test.cljc
@@ -22,7 +22,7 @@
   (is (not (s/valid? cut/auth? (yaml/load-as-edn "keycloak-test/invalid-auth.yaml")))))
 
 (deftest test-whole-generation
-  (is (= 29
+  (is (= 32
          (count
           (cut/config-objects
            (yaml/load-as-edn "keycloak-test/valid-config.yaml")))))
-- 
2.45.3


From 053e579fa4dd7334d07357df543738b25922ada1 Mon Sep 17 00:00:00 2001
From: Michael Jerger <michael.jerger@meissa-gmbh.de>
Date: Tue, 11 Mar 2025 13:31:07 +0100
Subject: [PATCH 2/4] add monitoring

---
 infrastructure/backup/image/Dockerfile           |  2 +-
 infrastructure/backup/image/resources/backup.bb  | 10 ++++++++++
 infrastructure/backup/image/resources/config.edn |  5 ++++-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/infrastructure/backup/image/Dockerfile b/infrastructure/backup/image/Dockerfile
index 59a99c5..00b06fc 100644
--- a/infrastructure/backup/image/Dockerfile
+++ b/infrastructure/backup/image/Dockerfile
@@ -1,4 +1,4 @@
-FROM domaindrivenarchitecture/dda-backup:5.3.0
+FROM domaindrivenarchitecture/dda-backup:5.3.1-dev2025-03-11-13-11-27
 
 ADD resources /tmp
 RUN /tmp/install.bb
diff --git a/infrastructure/backup/image/resources/backup.bb b/infrastructure/backup/image/resources/backup.bb
index 1845393..c397942 100755
--- a/infrastructure/backup/image/resources/backup.bb
+++ b/infrastructure/backup/image/resources/backup.bb
@@ -5,6 +5,7 @@
  '[dda.backup.config :as cfg]
  '[dda.backup.restic :as rc]
  '[dda.backup.postgresql :as pg]
+ '[dda.backup.monitoring :as mon]
  '[dda.backup.backup :as bak])
 
 (def config (cfg/read-config "/usr/local/bin/config.edn"))
@@ -22,6 +23,15 @@
   []
   (bak/backup-db! (:db-config config)))
 
+(mon/send-metrics!
+ {:name "backup"
+  :metrics {:kube_job_status_active 1
+            :kube_job_status_start_time (/ (System/currentTimeMillis) 1000)}})
 (prepare!)
 (restic-repo-init!)
 (restic-backup!)
+(mon/send-metrics!
+ {:name "backup"
+  :metrics {:kube_job_status_active 0
+            :kube_job_status_succeeded 1
+            :kube_job_status_completion_time (/ (System/currentTimeMillis) 1000)}})
diff --git a/infrastructure/backup/image/resources/config.edn b/infrastructure/backup/image/resources/config.edn
index 722e129..f169371 100644
--- a/infrastructure/backup/image/resources/config.edn
+++ b/infrastructure/backup/image/resources/config.edn
@@ -12,4 +12,7 @@
  :aws-config {:aws-access-key-id #env-or-file "AWS_ACCESS_KEY_ID"
               :aws-secret-access-key #env-or-file "AWS_SECRET_ACCESS_KEY"}
 
- :dry-run {:dry-run true :debug true}}
\ No newline at end of file
+ :namespace "keycloak"
+ 
+ :dry-run {:dry-run true :debug true}
+ }
\ No newline at end of file
-- 
2.45.3


From 6b093664a7285e1bcd6151afc22d62982bc00502 Mon Sep 17 00:00:00 2001
From: Michael Jerger <michael.jerger@meissa-gmbh.de>
Date: Tue, 11 Mar 2025 16:22:19 +0100
Subject: [PATCH 3/4] add monitoring to backup

---
 infrastructure/backup/image/Dockerfile        |  2 +-
 .../backup/image/resources/backup.bb          | 20 ++++++++-----------
 .../backup/image/resources/config.edn         |  9 +++++----
 .../backup/image/resources/install.bb         |  1 +
 .../backup/image/resources/monitoring.bb      | 11 ++++++++++
 5 files changed, 26 insertions(+), 17 deletions(-)
 create mode 100644 infrastructure/backup/image/resources/monitoring.bb

diff --git a/infrastructure/backup/image/Dockerfile b/infrastructure/backup/image/Dockerfile
index 00b06fc..474d6ff 100644
--- a/infrastructure/backup/image/Dockerfile
+++ b/infrastructure/backup/image/Dockerfile
@@ -1,4 +1,4 @@
-FROM domaindrivenarchitecture/dda-backup:5.3.1-dev2025-03-11-13-11-27
+FROM domaindrivenarchitecture/dda-backup:5.3.1-dev2025-03-11-14-28-46
 
 ADD resources /tmp
 RUN /tmp/install.bb
diff --git a/infrastructure/backup/image/resources/backup.bb b/infrastructure/backup/image/resources/backup.bb
index c397942..2551205 100755
--- a/infrastructure/backup/image/resources/backup.bb
+++ b/infrastructure/backup/image/resources/backup.bb
@@ -23,15 +23,11 @@
   []
   (bak/backup-db! (:db-config config)))
 
-(mon/send-metrics!
- {:name "backup"
-  :metrics {:kube_job_status_active 1
-            :kube_job_status_start_time (/ (System/currentTimeMillis) 1000)}})
-(prepare!)
-(restic-repo-init!)
-(restic-backup!)
-(mon/send-metrics!
- {:name "backup"
-  :metrics {:kube_job_status_active 0
-            :kube_job_status_succeeded 1
-            :kube_job_status_completion_time (/ (System/currentTimeMillis) 1000)}})
+(try
+  (mon/backup-start-metrics! (:db-config config))
+  (prepare!)
+  (restic-repo-init!)
+  (restic-backup!)
+  (mon/backup-success-metrics! (:db-config config))
+  (catch Exception e 
+    (mon/backup-fail-metrics! (:db-config config))))
diff --git a/infrastructure/backup/image/resources/config.edn b/infrastructure/backup/image/resources/config.edn
index f169371..3ba883f 100644
--- a/infrastructure/backup/image/resources/config.edn
+++ b/infrastructure/backup/image/resources/config.edn
@@ -1,5 +1,8 @@
-{:restic-repo {:password-file #env-or-file "RESTIC_PASSWORD_FILE"
-               :restic-repository #env-or-file "RESTIC_REPOSITORY"}
+{:monitoring {:namespace "keycloak"}
+ 
+ :restic-repo #merge [#ref [:monitoring]
+                      {:password-file #env-or-file "RESTIC_PASSWORD_FILE"
+                       :restic-repository #env-or-file "RESTIC_REPOSITORY"}]
 
  :db-config #merge [#ref [:restic-repo]
                     {:backup-path "pg-database"
@@ -12,7 +15,5 @@
  :aws-config {:aws-access-key-id #env-or-file "AWS_ACCESS_KEY_ID"
               :aws-secret-access-key #env-or-file "AWS_SECRET_ACCESS_KEY"}
 
- :namespace "keycloak"
- 
  :dry-run {:dry-run true :debug true}
  }
\ No newline at end of file
diff --git a/infrastructure/backup/image/resources/install.bb b/infrastructure/backup/image/resources/install.bb
index 3f96494..301e714 100755
--- a/infrastructure/backup/image/resources/install.bb
+++ b/infrastructure/backup/image/resources/install.bb
@@ -14,4 +14,5 @@
 (in/install! "list-snapshots.bb")
 (in/install! "change-password.bb")
 (in/install! "wait.bb")
+(in/install! "monitoring.bb")
 (ub/cleanup-container!)
\ No newline at end of file
diff --git a/infrastructure/backup/image/resources/monitoring.bb b/infrastructure/backup/image/resources/monitoring.bb
new file mode 100644
index 0000000..b963e93
--- /dev/null
+++ b/infrastructure/backup/image/resources/monitoring.bb
@@ -0,0 +1,11 @@
+#!/usr/bin/env bb
+
+(require
+ '[dda.backup.monitoring :as mon])
+
+(def config {:metrics {:kube_job_status_active 0
+                       :kube_job_status_failed 1
+                       :kube_job_status_succeeded 0
+                       :kube_job_status_start_time (/ (System/currentTimeMillis) 1000)}})
+
+(mon/send-metrics! config)
\ No newline at end of file
-- 
2.45.3


From d5cbc62bbba755cec56f40e0c016dd5eb6ee3135 Mon Sep 17 00:00:00 2001
From: Michael Jerger <michael.jerger@meissa-gmbh.de>
Date: Tue, 11 Mar 2025 17:10:19 +0100
Subject: [PATCH 4/4] update versions

---
 infrastructure/backup/image/Dockerfile | 2 +-
 project.clj                            | 4 ++--
 shadow-cljs.edn                        | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/infrastructure/backup/image/Dockerfile b/infrastructure/backup/image/Dockerfile
index 474d6ff..564b1ee 100644
--- a/infrastructure/backup/image/Dockerfile
+++ b/infrastructure/backup/image/Dockerfile
@@ -1,4 +1,4 @@
-FROM domaindrivenarchitecture/dda-backup:5.3.1-dev2025-03-11-14-28-46
+FROM domaindrivenarchitecture/dda-backup:5.4.0
 
 ADD resources /tmp
 RUN /tmp/install.bb
diff --git a/project.clj b/project.clj
index e35a186..bf199dd 100644
--- a/project.clj
+++ b/project.clj
@@ -4,8 +4,8 @@
   :license {:name "Apache License, Version 2.0"
             :url "https://www.apache.org/licenses/LICENSE-2.0.html"}
   :dependencies [[org.clojure/clojure "1.12.0"]
-                 [org.clojure/tools.reader "1.5.1"]
-                 [org.domaindrivenarchitecture/c4k-common-clj "9.0.2-SNAPSHOT"]]
+                 [org.clojure/tools.reader "1.5.2"]
+                 [org.domaindrivenarchitecture/c4k-common-clj "10.0.0"]]
   :target-path "target/%s/"
   :source-paths ["src/main/cljc"
                  "src/main/clj"]
diff --git a/shadow-cljs.edn b/shadow-cljs.edn
index 18a18fb..234c1ab 100644
--- a/shadow-cljs.edn
+++ b/shadow-cljs.edn
@@ -4,7 +4,7 @@
                 "src/test/cljc"
                 "src/test/cljs"
                 "src/test/resources"]
- :dependencies [[org.domaindrivenarchitecture/c4k-common-cljs "9.0.1"]
+ :dependencies [[org.domaindrivenarchitecture/c4k-common-cljs "10.0.0"]
                 [hickory "0.7.1"]]
  :builds {:frontend {:target :browser
                      :modules {:main {:init-fn dda.c4k-keycloak.browser/init}}
-- 
2.45.3