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.
61 lines
2.7 KiB
Clojure
61 lines
2.7 KiB
Clojure
(ns dda.c4k-website.core
|
|
(:require
|
|
[clojure.spec.alpha :as s]
|
|
[dda.c4k-common.yaml :as yaml]
|
|
[dda.c4k-common.common :as cm]
|
|
[dda.c4k-website.website :as website]))
|
|
|
|
(def config-defaults {:issuer "staging"})
|
|
|
|
(def config? (s/keys :req-un [::website/fqdn
|
|
::website/single
|
|
::website/multi
|
|
::website/fqdn1
|
|
::website/fqdn2]
|
|
:opt-un [::website/issuer]))
|
|
|
|
(def auth? (s/keys :req-un [::website/authtoken
|
|
::website/gitrepourl]))
|
|
(defn set-single-repo-url
|
|
[config]
|
|
(assoc config :gitrepourl (:singlegitrepourl config)))
|
|
|
|
(defn set-multi-fqdn ; Sets the first value of :multi to be the name giving fqdn
|
|
[config]
|
|
(assoc config :fqdn (keyword ((keyword (first (:multi config))) config))) config)
|
|
|
|
(defn set-single-fqdn ; Sets the value of :single to be the name giving fqdn
|
|
[config]
|
|
(assoc config :fqdn ((keyword (:single config)) config)))
|
|
|
|
(defn k8s-objects [config]
|
|
(cm/concat-vec
|
|
(map yaml/to-string
|
|
(filter #(not (nil? %))
|
|
[; multi-case
|
|
(website/generate-nginx-deployment (set-multi-fqdn config))
|
|
(website/generate-multi-nginx-configmap config)
|
|
(website/generate-nginx-service (set-multi-fqdn config))
|
|
(website/generate-website-content-volume (set-multi-fqdn config))
|
|
(website/generate-multi-ingress config)
|
|
(website/generate-multi-certificate config)
|
|
(website/generate-website-build-cron (set-multi-fqdn config))
|
|
(website/generate-website-build-secret (set-multi-fqdn config))
|
|
; single case
|
|
(website/generate-nginx-deployment (set-single-fqdn config))
|
|
(website/generate-single-nginx-configmap config)
|
|
(website/generate-nginx-service (set-single-fqdn config))
|
|
(website/generate-website-content-volume (set-single-fqdn config))
|
|
(website/generate-single-ingress config)
|
|
(website/generate-single-certificate config)
|
|
(website/generate-website-build-cron (set-single-repo-url (set-single-fqdn config)))
|
|
(website/generate-website-build-secret (set-single-fqdn config))]))))
|
|
|
|
; read config,
|
|
;
|
|
; when multi not empty
|
|
; call multi-functions and set value of key :fqdn to first value of key of list of :multi
|
|
; then call general functions with modified input
|
|
; if single empty, return nil for any single function
|
|
; else call single-functions and set value of key :fqdn to value of key of key :single
|
|
; then call general functions with modified input |