You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.8 KiB
Clojure
44 lines
1.8 KiB
Clojure
(ns dda.c4k-nextcloud.core
|
|
(:require
|
|
#?(:clj [orchestra.core :refer [defn-spec]]
|
|
:cljs [orchestra.core :refer-macros [defn-spec]])
|
|
[dda.c4k-common.common :as cm]
|
|
[dda.c4k-common.predicate :as cp]
|
|
[dda.c4k-common.yaml :as yaml]
|
|
[dda.c4k-common.postgres :as postgres]
|
|
[dda.c4k-nextcloud.nextcloud :as nextcloud]
|
|
[dda.c4k-nextcloud.backup :as backup]
|
|
[dda.c4k-common.monitoring :as mon]))
|
|
|
|
(def default-storage-class :local-path)
|
|
|
|
(def config-defaults {:issuer "staging"})
|
|
|
|
(defn-spec k8s-objects cp/map-or-seq?
|
|
[config nextcloud/config?
|
|
auth nextcloud/auth?]
|
|
(let [nextcloud-default-storage-config {:pvc-storage-class-name default-storage-class
|
|
:pv-storage-size-gb 200}]
|
|
(map yaml/to-string
|
|
(filter
|
|
#(not (nil? %))
|
|
(cm/concat-vec
|
|
[(postgres/generate-config {:postgres-size :8gb :db-name "nextcloud"})
|
|
(postgres/generate-secret auth)
|
|
(postgres/generate-pvc {:pv-storage-size-gb 50
|
|
:pvc-storage-class-name default-storage-class})
|
|
(postgres/generate-deployment)
|
|
(postgres/generate-service)
|
|
(nextcloud/generate-secret auth)
|
|
(nextcloud/generate-pvc (merge nextcloud-default-storage-config config))
|
|
(nextcloud/generate-deployment config)
|
|
(nextcloud/generate-service)]
|
|
(nextcloud/generate-ingress-and-cert config)
|
|
(when (:contains? config :restic-repository)
|
|
[(backup/generate-config config)
|
|
(backup/generate-secret auth)
|
|
(backup/generate-cron)
|
|
(backup/generate-backup-restore-deployment config)])
|
|
(when (:contains? config :mon-cfg)
|
|
(mon/generate (:mon-cfg config) (:mon-auth auth))))))))
|