mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 08:00:06 +01:00
feat(submodules): support for submodule passthru
This commit is contained in:
parent
7afbc91301
commit
a8dcc69d54
5 changed files with 30 additions and 30 deletions
|
|
@ -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);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -363,21 +363,10 @@ in {
|
|||
resources.${group}.${version}.${kind}.${name} = object;
|
||||
}) cfg.imports));
|
||||
|
||||
kubernetes.objects = mkMerge [
|
||||
# versioned resources
|
||||
(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))
|
||||
];
|
||||
kubernetes.objects = flatten (map (type:
|
||||
mapAttrsToList (name: resource: moduleToAttrs resource)
|
||||
cfg.api.resources.${type.group}.${type.version}.${type.kind}
|
||||
) cfg.api.types);
|
||||
|
||||
kubernetes.generated = k8s.mkHashedList {
|
||||
items = config.kubernetes.objects;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ with lib;
|
|||
};
|
||||
|
||||
passthru = mkOption {
|
||||
description = "Attribute set to passthru to parent";
|
||||
description = "Attribute set to passthru";
|
||||
default = {};
|
||||
type = types.attrs;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue