feat: refactor kubenix.k8s-submodule to kubenix.all module

This commit is contained in:
Jaka Hudoklin 2019-03-05 21:26:49 +01:00
parent 03e1f4c1c4
commit fbaed4ec00
No known key found for this signature in database
GPG key ID: 6A08896BFD32BD95
6 changed files with 78 additions and 6 deletions

71
modules/all.nix Normal file
View file

@ -0,0 +1,71 @@
{ config, lib, kubenix, ... }:
with lib;
let
parentConfig = config;
in {
imports = with kubenix; [ submodules k8s docker ];
options = {
kubenix.release = mkOption {
description = "Name of the release";
type = types.str;
default = "default";
};
kubernetes.propagateDefaults = mkOption {
description = "Whether to propagate child defaults to submodules";
type = types.bool;
default = true;
};
submodules.instances = mkOption {
type = types.attrsOf (types.submodule ({config, ...}: {
options = {
namespace = mkOption {
description = "Default kubernetes namespace";
type = types.str;
default = "default";
};
};
config.config = {
kubernetes.api.defaults = [{
default.metadata.namespace = mkDefault config.namespace;
}];
};
}));
};
};
config = {
submodules.defaults = [{
default = {
imports = [ kubenix.all ];
kubernetes.version = mkDefault config.kubernetes.version;
kubernetes.api.defaults =
mkIf config.kubernetes.propagateDefaults config.kubernetes.api.defaults;
};
} {
default = ({config, ...}: {
kubenix.release = parentConfig.kubenix.release;
kubernetes.api.defaults = [{
default.metadata.labels = {
"kubenix/module-name" = config.submodule.name;
"kubenix/module-version" = config.submodule.version;
"kubenix/release" = config.kubenix.release;
};
}];
});
}];
kubernetes.objects = mkMerge (mapAttrsToList (_: submodule:
submodule.config.kubernetes.objects
) config.submodules.instances);
docker.push = mkMerge (mapAttrsToList (_: submodule:
submodule.config.docker.push
) config.submodules.instances);
};
}

View file

@ -1,9 +1,9 @@
{
submodules = ./submodules.nix;
k8s = ./k8s;
k8s-submodules = ./k8s/submodule.nix;
istio = ./istio;
testing = ./testing;
helm = ./helm;
docker = ./docker;
all = ./all.nix;
}

View file

@ -191,6 +191,7 @@ in {
submodules.instances = mkOption {
description = "Attribute set of submodule instances";
default = {};
type = types.attrsOf (types.submodule ({name, config, ...}: let
# submodule associated with
submodule = findSubmodule {