Add deep-merge and light modification to create-ingress
This commit is contained in:
@@ -11,10 +11,30 @@
|
|||||||
(defn assoc-ins [m path-vals]
|
(defn assoc-ins [m path-vals]
|
||||||
(reduce (fn [acc [path val]] (assoc-in acc path val)) m path-vals))
|
(reduce (fn [acc [path val]] (assoc-in acc path val)) m path-vals))
|
||||||
|
|
||||||
(defn deep-merge [a b]
|
(declare deep-merge)
|
||||||
(merge-with (fn [x y]
|
|
||||||
(if (map? y) (deep-merge x y) y))
|
(defn merge-by-name
|
||||||
a b))
|
"Merges two vectors of maps by :name key."
|
||||||
|
[a b]
|
||||||
|
(let [a-map (into {} (map #(vector (:name %) %) a))
|
||||||
|
b-map (into {} (map #(vector (:name %) %) b))
|
||||||
|
merged (merge-with deep-merge a-map b-map)]
|
||||||
|
(vec (vals merged))))
|
||||||
|
|
||||||
|
(defn deep-merge
|
||||||
|
"Recursively merges maps and intelligently merges vectors of maps by :name."
|
||||||
|
[a b]
|
||||||
|
(cond
|
||||||
|
(nil? b) a
|
||||||
|
(and (map? a) (map? b))
|
||||||
|
(merge-with deep-merge a b)
|
||||||
|
|
||||||
|
(and (vector? a) (vector? b)
|
||||||
|
(every? map? a) (every? map? b)
|
||||||
|
(some #(contains? % :name) (concat a b)))
|
||||||
|
(merge-by-name a b)
|
||||||
|
:else b))
|
||||||
|
|
||||||
|
|
||||||
(defn make-transformer
|
(defn make-transformer
|
||||||
"Given f that takes {:app-name .. :secrets ..}, where :secrets is a plain map
|
"Given f that takes {:app-name .. :secrets ..}, where :secrets is a plain map
|
||||||
@@ -94,9 +114,8 @@
|
|||||||
:rules [{:host host
|
:rules [{:host host
|
||||||
:http {:paths [{:path "/"
|
:http {:paths [{:path "/"
|
||||||
:pathType "Prefix"
|
:pathType "Prefix"
|
||||||
:backend {:service {:name app-name
|
:backend {:service {:name (or (:service-name ingress-options) app-name)
|
||||||
:port {:number image-port}}}}]}}]}
|
:port {:number image-port}}}}]}}]}}
|
||||||
}
|
|
||||||
final-args (deep-merge base-args ingress-options)]
|
final-args (deep-merge base-args ingress-options)]
|
||||||
(new-resource (.. k8s -networking -v1 -Ingress) app-name final-args provider dependencies)))
|
(new-resource (.. k8s -networking -v1 -Ingress) app-name final-args provider dependencies)))
|
||||||
|
|
||||||
@@ -154,7 +173,7 @@
|
|||||||
(assoc :transformations transformations-fn)))))
|
(assoc :transformations transformations-fn)))))
|
||||||
|
|
||||||
deployment (when (requested-components :deployment)
|
deployment (when (requested-components :deployment)
|
||||||
(create-deployment provider app-namespace app-name app-labels image image-port [docker-image] deployment-opts))
|
(create-deployment provider app-namespace app-name app-labels image image-port (vec (filter some? [ns docker-image bind-secrets])) deployment-opts))
|
||||||
|
|
||||||
service (when (requested-components :service)
|
service (when (requested-components :service)
|
||||||
(create-service provider app-namespace app-name app-labels image-port [deployment] service-opts))
|
(create-service provider app-namespace app-name app-labels image-port [deployment] service-opts))
|
||||||
|
|||||||
Reference in New Issue
Block a user