diff --git a/conf/zuul/components/Executor.dhall b/conf/zuul/components/Executor.dhall index c701b53..c80ca89 100644 --- a/conf/zuul/components/Executor.dhall +++ b/conf/zuul/components/Executor.dhall @@ -2,10 +2,12 @@ let Kubernetes = ../../Kubernetes.dhall let F = ../functions.dhall +let InputExecutor = (../input.dhall).Executor.Type + let JobVolume = (../input.dhall).JobVolume.Type in \(app-name : Text) - -> \(image-name : Optional Text) + -> \(input-executor : InputExecutor) -> \(data-dir : List F.Volume.Type) -> \(volumes : List F.Volume.Type) -> \(env : List Kubernetes.EnvVar.Type) @@ -31,7 +33,7 @@ in \(app-name : Text) , claim-size = 0 , container = Kubernetes.Container::{ , name = "executor" - , image = image-name + , image = input-executor.image , args = Some [ "zuul-executor", "-d" ] , imagePullPolicy = Some "IfNotPresent" , ports = Some diff --git a/conf/zuul/components/Merger.dhall b/conf/zuul/components/Merger.dhall index 01ac55a..e2dc490 100644 --- a/conf/zuul/components/Merger.dhall +++ b/conf/zuul/components/Merger.dhall @@ -2,8 +2,10 @@ let Kubernetes = ../../Kubernetes.dhall let F = ../functions.dhall +let InputMerger = (../input.dhall).Merger.Type + in \(app-name : Text) - -> \(image-name : Optional Text) + -> \(input-merger : InputMerger) -> \(data-dir : List F.Volume.Type) -> \(volumes : List F.Volume.Type) -> \(env : List Kubernetes.EnvVar.Type) @@ -18,7 +20,7 @@ in \(app-name : Text) , volumes = volumes , container = Kubernetes.Container::{ , name = "merger" - , image = image-name + , image = input-merger.image , args = Some [ "zuul-merger", "-d" ] , imagePullPolicy = Some "IfNotPresent" , env = Some env diff --git a/conf/zuul/components/Preview.dhall b/conf/zuul/components/Preview.dhall index b8c2493..6e205d6 100644 --- a/conf/zuul/components/Preview.dhall +++ b/conf/zuul/components/Preview.dhall @@ -5,9 +5,8 @@ let F = ../functions.dhall let InputPreview = (../input.dhall).Preview.Type in \(app-name : Text) - -> \(image-name : Optional Text) - -> \(data-dir : List F.Volume.Type) -> \(input-preview : InputPreview) + -> \(data-dir : List F.Volume.Type) -> F.KubernetesComponent::{ , Service = Some (F.mkService app-name "preview" "preview" 80) , Deployment = Some @@ -19,7 +18,7 @@ in \(app-name : Text) , data-dir = data-dir , container = Kubernetes.Container::{ , name = "preview" - , image = image-name + , image = input-preview.image , imagePullPolicy = Some "IfNotPresent" , ports = Some [ Kubernetes.ContainerPort::{ diff --git a/conf/zuul/components/Registry.dhall b/conf/zuul/components/Registry.dhall index 6629089..64dd91e 100644 --- a/conf/zuul/components/Registry.dhall +++ b/conf/zuul/components/Registry.dhall @@ -30,10 +30,9 @@ let registry-env = ) in \(app-name : Text) - -> \(image-name : Optional Text) + -> \(input-registry : InputRegistry) -> \(data-dir : List F.Volume.Type) -> \(volumes : List F.Volume.Type) - -> \(input-registry : InputRegistry) -> F.KubernetesComponent::{ , Service = Some (F.mkService app-name "registry" "registry" 9000) , StatefulSet = Some @@ -47,7 +46,7 @@ in \(app-name : Text) , claim-size = F.defaultNat input-registry.storage-size 20 , container = Kubernetes.Container::{ , name = "registry" - , image = image-name + , image = input-registry.image , args = Some [ "zuul-registry" , "-c" diff --git a/conf/zuul/components/Scheduler.dhall b/conf/zuul/components/Scheduler.dhall index 32f1f7a..7fffcf3 100644 --- a/conf/zuul/components/Scheduler.dhall +++ b/conf/zuul/components/Scheduler.dhall @@ -2,8 +2,10 @@ let Kubernetes = ../../Kubernetes.dhall let F = ../functions.dhall +let InputScheduler = (../input.dhall).Scheduler.Type + in \(app-name : Text) - -> \(image-name : Optional Text) + -> \(input-scheduler : InputScheduler) -> \(data-dir : List F.Volume.Type) -> \(volumes : List F.Volume.Type) -> \(env : List Kubernetes.EnvVar.Type) @@ -20,7 +22,7 @@ in \(app-name : Text) , claim-size = 5 , container = Kubernetes.Container::{ , name = "scheduler" - , image = image-name + , image = input-scheduler.image , args = Some [ "zuul-scheduler", "-d" ] , imagePullPolicy = Some "IfNotPresent" , ports = Some diff --git a/conf/zuul/components/Web.dhall b/conf/zuul/components/Web.dhall index 72c8a59..7c9a305 100644 --- a/conf/zuul/components/Web.dhall +++ b/conf/zuul/components/Web.dhall @@ -2,8 +2,10 @@ let Kubernetes = ../../Kubernetes.dhall let F = ../functions.dhall +let InputWeb = (../input.dhall).Web.Type + in \(app-name : Text) - -> \(image-name : Optional Text) + -> \(input-web : InputWeb) -> \(data-dir : List F.Volume.Type) -> \(volumes : List F.Volume.Type) -> \(env : List Kubernetes.EnvVar.Type) @@ -19,7 +21,7 @@ in \(app-name : Text) , volumes = volumes , container = Kubernetes.Container::{ , name = "web" - , image = image-name + , image = input-web.image , args = Some [ "zuul-web", "-d" ] , imagePullPolicy = Some "IfNotPresent" , ports = Some diff --git a/conf/zuul/resources.dhall b/conf/zuul/resources.dhall index bc60eaf..65e2851 100644 --- a/conf/zuul/resources.dhall +++ b/conf/zuul/resources.dhall @@ -148,6 +148,17 @@ in \(input : Input) let image = \(name : Text) -> "${org}/${name}:${version}" + let set-image = + \(default-name : Text) + -> \(input-name : Optional Text) + -> { image = + merge + { None = Some default-name + , Some = \(_ : Text) -> input-name + } + input-name + } + let etc-zuul = Volume::{ , name = input.name ++ "-secret-zuul" @@ -306,7 +317,7 @@ in \(input : Input) } , Zuul = let zuul-image = - \(name : Text) -> Some (image ("zuul-" ++ name)) + \(name : Text) -> set-image (image "zuul-${name}") let zuul-env = F.mkEnvVarValue (toMap { HOME = "/var/lib/zuul" }) @@ -357,14 +368,18 @@ in \(input : Input) in { Scheduler = ./components/Scheduler.dhall input.name - (zuul-image "scheduler") + ( input.scheduler + // zuul-image "scheduler" input.scheduler.image + ) zuul-data-dir (zuul-volumes # [ sched-config ]) (zuul-env # db-secret-env # zk-hosts-secret-env) , Executor = ./components/Executor.dhall input.name - (zuul-image "executor") + ( input.executor + // zuul-image "executor" input.executor.image + ) zuul-data-dir (zuul-volumes # [ executor-ssh-key ]) (zuul-env # db-nosecret-env) @@ -372,30 +387,34 @@ in \(input : Input) , Web = ./components/Web.dhall input.name - (zuul-image "web") + (input.web // zuul-image "web" input.web.image) zuul-data-dir zuul-volumes (zuul-env # db-secret-env # zk-hosts-secret-env) , Merger = ./components/Merger.dhall input.name - (zuul-image "merger") + ( input.merger + // zuul-image "merger" input.merger.image + ) zuul-data-dir zuul-volumes (zuul-env # db-nosecret-env) , Registry = ./components/Registry.dhall input.name - (zuul-image "registry") + ( input.registry + // zuul-image "registry" input.registry.image + ) zuul-data-dir [ etc-zuul-registry ] - input.registry , Preview = ./components/Preview.dhall input.name - (zuul-image "preview") + ( input.preview + // zuul-image "preview" input.preview.image + ) zuul-data-dir - input.preview } , Nodepool = let nodepool-image =