From a75a415d6578f017812b0de2cc6c153bf7e63737 Mon Sep 17 00:00:00 2001 From: GigiaJ Date: Thu, 2 Oct 2025 21:49:08 -0500 Subject: [PATCH] Make base more robust for the init infra deployments --- iac/src/main/base.cljs | 53 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/iac/src/main/base.cljs b/iac/src/main/base.cljs index 5700016..6b8ce70 100644 --- a/iac/src/main/base.cljs +++ b/iac/src/main/base.cljs @@ -5,44 +5,45 @@ [infra.init :as infra] [k8s.add-ons.csi-driver.hetzner :as hetzner-csi] [k8s.add-ons.ingress-controller.caddy :as caddy] - [k8s.services.openbao.service :as vault-service])) + [infra.openbao :as openbao])) + +(defn if-no-apps [apps then-fn & [else-fn]] + (if (nil? apps) + (then-fn) + (if else-fn (else-fn) nil))) -(defn app-deployments - "Deploy applications with proper dependency chain" - [provider config kc apps] - (let [vault-result (vault-service/deploy-vault provider) - app-results (if (nil? apps) {} (apps config provider))] - (assoc app-results :vault vault-result))) (defn initialize [apps] (let [cfg (pulumi/Config.) - cluster (infra/create-cluster cfg) - setup (.apply (get cluster :kubeconfig) + stack-ref (new pulumi/StackReference "init") + kubeconfig (if-no-apps apps #(infra/create-cluster cfg) #(.getOutput stack-ref "kubeconfig")) + setup (.apply kubeconfig (fn [kc] (js/Promise. (fn [resolve _reject] (let [provider (new k8s/Provider "k8s-dynamic-provider" - (clj->js {:kubeconfig kc}))] - (caddy/deploy provider) - (hetzner-csi/deploy provider) + (clj->js {:kubeconfig kc}))] (resolve - (if (nil? apps) - (app-deployments provider cfg kc nil) - (app-deployments provider cfg kc apps))))))))] - {:cluster cluster :setup setup})) + (if-no-apps + apps + #(let [vault-result (openbao/deploy provider) + caddy-result (caddy/deploy provider) + csi-result (hetzner-csi/deploy provider)] + {:vault vault-result + :caddy caddy-result + :csi csi-result}) + #(apps stack-ref cfg provider) + )))))))] + {:kubeconfig kubeconfig :setup setup})) (defn build-exports [init] - (let [cluster (get init :cluster) + (let [kubeconfig (get init :kubeconfig) app-outputs (get init :setup)] - {:kubeconfig (get cluster :kubeconfig) - :masterIp (get cluster :masterIp) - :workerDeIp (get cluster :workerDeIp) - :workerUsIp (get cluster :workerUsIp) + {:kubeconfig (get kubeconfig :kubeconfig) :vaultAddress (pulumi/output (.apply app-outputs #(get-in % [:vault :address]))) - :vaultToken (pulumi/output (.apply app-outputs #(get-in % [:vault :root-token]))) - })) + :vaultToken (pulumi/output (.apply app-outputs #(get-in % [:vault :root-token])))})) (defn quick-deploy [] @@ -53,7 +54,5 @@ (defn deploy-core [] (let [init (initialize nil)] - (set! (.-exports js/module) - (clj->js (build-exports init)) - ) - )) \ No newline at end of file + (set! (.-exports js/module) + (clj->js (build-exports init))))) \ No newline at end of file