From a98aae76bfa5c197b53d1b0abde68b935ccfd98f Mon Sep 17 00:00:00 2001 From: bom Date: Fri, 21 May 2021 17:29:24 +0200 Subject: [PATCH] mob --- src/main/cljc/dda/k8s_keycloak/core.cljc | 45 ++++++++++++++++--- src/test/cljc/dda/k8s_keycloak/core_test.cljc | 16 +++---- valid-config.edn | 5 ++- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/src/main/cljc/dda/k8s_keycloak/core.cljc b/src/main/cljc/dda/k8s_keycloak/core.cljc index b3d6dce..b39d53c 100644 --- a/src/main/cljc/dda/k8s_keycloak/core.cljc +++ b/src/main/cljc/dda/k8s_keycloak/core.cljc @@ -6,19 +6,46 @@ :cljs [orchestra.core :refer-macros [defn-spec]]) [dda.k8s-keycloak.yaml :as yaml])) -(def config? any?) +(defn bash-env-string? + [input] + (and (string? input) + (not (re-matches #".*['\"\$]+.*" input)))) + +(defn fqdn-string? + [input] + (and (string? input) + (not (nil? (re-matches #"(?=^.{4,253}\.?$)(^((?!-)[a-zA-Z0-9-]{1,63}(? (yaml/from-string (yaml/load-resource "config.yaml")) (assoc-in [:data :config.edn] (str my-config)) - (assoc-in [ :data :credentials.edn] (str my-auth)) - )) + (assoc-in [ :data :credentials.edn] (str my-auth)))) -(defn generate-deployment [] - (yaml/from-string (yaml/load-resource "deployment.yaml"))) +(defn generate-deployment [config] + (let [user (:user config) + password (:password config)] + (-> + (yaml/from-string (yaml/load-resource "deployment.yaml")) + (assoc-in [:spec :template :spec :containers] + [{:name "keycloak" + :image "quay.io/keycloak/keycloak:13.0.0" + :env + [{:name "KEYCLOAK_USER", :value user} + {:name "KEYCLOAK_PASSWORD", :value password} + {:name "PROXY_ADDRESS_FORWARDING", :value "true"}] + :ports [{:name "http", :containerPort 8080}] + :readinessProbe {:httpGet {:path "/auth/realms/master", :port 8080}}}])))) (defn generate-certificate [config] (let [{:keys [fqdn issuer] @@ -41,12 +68,20 @@ (assoc-in [:spec :rules] [{:host fqdn :http {:paths [{:backend {:serviceName "keycloak" :servicePort 8080}}]}}])))) + +(defn generate-service [] + (yaml/from-string (yaml/load-resource "service.yaml"))) + (defn-spec generate any? [my-config string? my-auth string?] (cs/join "\n" [(yaml/to-string (generate-config my-config my-auth)) + "---" + (yaml/to-string (generate-config)) "---" (yaml/to-string (generate-ingress)) "---" + (yaml/to-string (generate-service)) + "---" (yaml/to-string (generate-deployment))])) diff --git a/src/test/cljc/dda/k8s_keycloak/core_test.cljc b/src/test/cljc/dda/k8s_keycloak/core_test.cljc index 6b36508..e5a62c8 100644 --- a/src/test/cljc/dda/k8s_keycloak/core_test.cljc +++ b/src/test/cljc/dda/k8s_keycloak/core_test.cljc @@ -63,7 +63,7 @@ :issuer :prod})))) (deftest should-generate-deployment - (is (= {{:apiVersion "apps/v1" + (is (= {:apiVersion "apps/v1" :kind "Deployment" :metadata {:name "keycloak", :namespace "default", :labels {:app "keycloak"}} :spec @@ -73,12 +73,12 @@ {:metadata {:labels {:app "keycloak"}} :spec {:containers - [({:name "keycloak" + [{:name "keycloak" :image "quay.io/keycloak/keycloak:13.0.0" :env - ({:name "KEYCLOAK_USER", :value "admin"} - {:name "KEYCLOAK_PASSWORD", :value "admin"} - {:name "PROXY_ADDRESS_FORWARDING", :value "true"}) - :ports ({:name "http", :containerPort 8080}) - :readinessProbe {:httpGet {:path "/auth/realms/master", :port 8080}}})]}}}}} - (cut/generate-deployment)))) \ No newline at end of file + [{:name "KEYCLOAK_USER", :value "testuser"} + {:name "KEYCLOAK_PASSWORD", :value "test1234"} + {:name "PROXY_ADDRESS_FORWARDING", :value "true"}] + :ports [{:name "http", :containerPort 8080}] + :readinessProbe {:httpGet {:path "/auth/realms/master", :port 8080}}}]}}}} + (cut/generate-deployment {:user "testuser" :password "test1234"})))) \ No newline at end of file diff --git a/valid-config.edn b/valid-config.edn index 9e26dfe..a408c23 100644 --- a/valid-config.edn +++ b/valid-config.edn @@ -1 +1,4 @@ -{} \ No newline at end of file +{:fqdn "test.de" + :user-name "testuser" + :user-password "test1234" + :issuer :prod} \ No newline at end of file