diff --git a/src/main/cljc/dda/c4k_taiga/backup.cljc b/src/main/cljc/dda/c4k_taiga/backup.cljc index 3d8cba3..da77b15 100644 --- a/src/main/cljc/dda/c4k_taiga/backup.cljc +++ b/src/main/cljc/dda/c4k_taiga/backup.cljc @@ -1,27 +1,31 @@ (ns dda.c4k-taiga.backup (:require [clojure.spec.alpha :as s] - #?(:cljs [shadow.resource :as rc]) + #?(:clj [orchestra.core :refer [defn-spec]] + :cljs [orchestra.core :refer-macros [defn-spec]]) [dda.c4k-common.yaml :as yaml] [dda.c4k-common.base64 :as b64] [dda.c4k-common.common :as cm] - [dda.c4k-common.predicate :as pd])) + [dda.c4k-common.predicate :as p] + #?(:cljs [dda.c4k-common.macros :refer-macros [inline-resources]]))) -(s/def ::aws-access-key-id pd/bash-env-string?) -(s/def ::aws-secret-access-key pd/bash-env-string?) -(s/def ::restic-password pd/bash-env-string?) -(s/def ::restic-repository pd/bash-env-string?) +(s/def ::aws-access-key-id p/bash-env-string?) +(s/def ::aws-secret-access-key p/bash-env-string?) +(s/def ::restic-password p/bash-env-string?) +(s/def ::restic-new-password p/bash-env-string?) +(s/def ::restic-repository p/bash-env-string?) + +(s/def ::config (s/keys :req-un [::restic-repository])) + +(s/def ::auth (s/keys :req-un [::restic-password ::aws-access-key-id ::aws-secret-access-key] + :opt-un [::restic-new-password])) #?(:cljs (defmethod yaml/load-resource :backup [resource-name] - (case resource-name - "backup/config.yaml" (rc/inline "backup/config.yaml") - "backup/cron.yaml" (rc/inline "backup/cron.yaml") - "backup/secret.yaml" (rc/inline "backup/secret.yaml") - "backup/backup-restore-deployment.yaml" (rc/inline "backup/backup-restore-deployment.yaml") - (throw (js/Error. "Undefined Resource!"))))) + (get (inline-resources "backup") resource-name))) -(defn generate-config [my-conf] +(defn-spec generate-config p/map-or-seq? + [my-conf ::config] (let [{:keys [restic-repository]} my-conf] (-> (yaml/load-as-edn "backup/config.yaml") diff --git a/src/main/resources/backup/config.yaml b/src/main/resources/backup/config.yaml index 36781e7..aaceaad 100644 --- a/src/main/resources/backup/config.yaml +++ b/src/main/resources/backup/config.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: backup-config + namespace: taiga labels: app.kubernetes.io/name: backup app.kubernetes.io/part-of: taiga diff --git a/src/test/cljc/dda/c4k_taiga/backup_test.cljc b/src/test/cljc/dda/c4k_taiga/backup_test.cljc new file mode 100644 index 0000000..47703b2 --- /dev/null +++ b/src/test/cljc/dda/c4k_taiga/backup_test.cljc @@ -0,0 +1,21 @@ +(ns dda.c4k-taiga.backup-test + (:require + #?(:clj [clojure.test :refer [deftest is are testing run-tests]] + :cljs [cljs.test :refer-macros [deftest is are testing run-tests]]) + [clojure.spec.test.alpha :as st] + [dda.c4k-taiga.backup :as cut])) + +(st/instrument `cut/generate-secret) +(st/instrument `cut/generate-config) +(st/instrument `cut/generate-cron) + +(deftest should-generate-config + (is (= {:apiVersion "v1" + :kind "ConfigMap" + :metadata {:name "backup-config" + :namespace "taiga" + :labels {:app.kubernetes.io/name "backup" + :app.kubernetes.io/part-of "taiga"}} + :data + {:restic-repository "s3:restic-repository"}} + (cut/generate-config {:restic-repository "s3:restic-repository"})))) \ No newline at end of file