feat(submodules): support for submodule passthru

This commit is contained in:
Jaka Hudoklin 2019-10-06 21:36:13 +02:00
parent 7afbc91301
commit a8dcc69d54
No known key found for this signature in database
GPG key ID: D1F18234B07BD6E2
5 changed files with 30 additions and 30 deletions

View file

@ -87,17 +87,8 @@ in {
};
}];
docker.export = mkMerge [
(mapAttrsToList (_: i: i.image)
(filterAttrs (_: i: i.registry != null) config.docker.images))
# passthru of docker exported images if passthru is enabled on submodule
# and submodule has docker module loaded
(flatten (mapAttrsToList (_: submodule:
optionals
(submodule.passthru.enable && (elem "docker" submodule.config._module.features))
submodule.config.docker.export
) config.submodules.instances))
];
# list of exported docker images
docker.export = mapAttrsToList (_: i: i.image)
(filterAttrs (_: i: i.registry != null) config.docker.images);
};
}

View file

@ -363,21 +363,10 @@ in {
resources.${group}.${version}.${kind}.${name} = object;
}) cfg.imports));
kubernetes.objects = mkMerge [
# versioned resources
(flatten (map (type:
kubernetes.objects = flatten (map (type:
mapAttrsToList (name: resource: moduleToAttrs resource)
cfg.api.resources.${type.group}.${type.version}.${type.kind}
) cfg.api.types))
# passthru of child kubernetes objects if passthru is enabled on submodule
# and submodule has k8s module loaded
(flatten (mapAttrsToList (_: submodule:
optionals
(submodule.passthru.enable && (elem "k8s" submodule.config._module.features))
submodule.config.kubernetes.objects
) config.submodules.instances))
];
) cfg.api.types);
kubernetes.generated = k8s.mkHashedList {
items = config.kubernetes.objects;

View file

@ -30,7 +30,7 @@ with lib;
};
passthru = mkOption {
description = "Attribute set to passthru to parent";
description = "Attribute set to passthru";
default = {};
type = types.attrs;
};

View file

@ -44,6 +44,20 @@ let
then throw "No module found ${name}/${if version == null then "latest" else version}"
else head versionSortedSubmodules;
in matchingModule;
passthruConfig = mapAttrsToList (name: opt: {
${name} = mkMerge (mapAttrsToList (_: inst:
if inst.passthru.enable
then inst.config.submodule.passthru.${name} or {}
else {}
) config.submodules.instances);
_module.args = mkMerge (mapAttrsToList (_: inst:
if inst.passthru.enable
then inst.config.submodule.passthru._module.args or {}
else {}
) config.submodules.instances);
}) (removeAttrs options ["_definedNames" "_module" "submodules"]);
in {
imports = [ ./base.nix ];
@ -248,5 +262,5 @@ in {
};
}];
})
];
] ++ passthruConfig);
}

View file

@ -26,7 +26,13 @@ in {
imports = with kubenix.modules; [ submodule k8s docker ];
config = {
submodule.name = "test-submodule";
submodule = {
name = "test-submodule";
passthru = {
kubernetes.objects = config.kubernetes.objects;
docker.images = config.docker.images;
};
};
kubernetes.resources.pods.nginx = {
metadata.name = name;