mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 16:10:05 +01:00
feat(legacy): improve CRD support
This commit is contained in:
parent
29b1140178
commit
26d0351eb8
5 changed files with 134 additions and 45 deletions
|
|
@ -169,7 +169,7 @@ let
|
|||
config = {
|
||||
apiVersion = mkOptionDefault "${ct.group}/${ct.version}";
|
||||
kind = mkOptionDefault ct.kind;
|
||||
metadata.name = mkOptionDefault name;
|
||||
metadata.name = mkDefault name;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -384,12 +384,12 @@ in {
|
|||
|
||||
# custom types created from customResourceDefinitions
|
||||
kubernetes.customTypes = mkIf cfg.createCustomTypesFromCRDs (
|
||||
mapAttrsToList (_: crd: {
|
||||
mapAttrsToList (name: crd: {
|
||||
group = crd.spec.group;
|
||||
version = crd.spec.version;
|
||||
kind = crd.spec.names.kind;
|
||||
name = crd.spec.names.plural;
|
||||
attrName = mkDefault crd.spec.names.plural;
|
||||
attrName = mkOptionDefault name;
|
||||
}) (cfg.resources.customResourceDefinitions or {})
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ with lib;
|
|||
|
||||
let
|
||||
parentModule = module;
|
||||
globalConfig = config;
|
||||
|
||||
mkOptionDefault = mkOverride 1001;
|
||||
|
||||
|
|
@ -120,10 +121,7 @@ in {
|
|||
namespace = mkOption {
|
||||
description = "Namespace where to deploy module";
|
||||
type = types.str;
|
||||
default =
|
||||
if parentModule != null
|
||||
then parentModule.namespace
|
||||
else "default";
|
||||
default = globalConfig.kubernetes.namespace;
|
||||
};
|
||||
|
||||
labels = mkOption {
|
||||
|
|
@ -161,43 +159,44 @@ in {
|
|||
options.kubernetes.customResources = options.kubernetes.resources;
|
||||
|
||||
config = {
|
||||
kubernetes.api.defaults = mapAttrsToList (attrName: default: let
|
||||
type = head (mapAttrsToList (_: v: v) (filterAttrs (_: type: type.attrName == attrName) config.kubernetes.api.types));
|
||||
in {
|
||||
default = { imports = default; };
|
||||
} // (if (attrName == "all") then {} else {
|
||||
resource = type.name;
|
||||
})) config.kubernetes.defaults;
|
||||
kubernetes = mkMerge [{
|
||||
api.defaults = mapAttrsToList (attrName: default: let
|
||||
type = head (mapAttrsToList (_: v: v) (filterAttrs (_: type: type.attrName == attrName) config.kubernetes.api.types));
|
||||
in {
|
||||
default = { imports = default; };
|
||||
} // (if (attrName == "all") then {} else {
|
||||
resource = type.name;
|
||||
})) config.kubernetes.defaults;
|
||||
|
||||
kubernetes.resources = mkMerge (
|
||||
mapAttrsToList (name: module:
|
||||
mapAttrs' (_: type: let
|
||||
moduleDefinition = getModuleDefinition module.module;
|
||||
resources = mkMerge (
|
||||
mapAttrsToList (name: module:
|
||||
mapAttrs' (_: type: let
|
||||
moduleDefinition = getModuleDefinition module.module;
|
||||
|
||||
moduleResources = module.configuration.kubernetes.api.resources.${type.attrName} or {};
|
||||
moduleResources = module.configuration.kubernetes.api.resources.${type.attrName} or {};
|
||||
|
||||
moduleConfig =
|
||||
if moduleDefinition.prefixResources
|
||||
then prefixResources (moduleToAttrs moduleResources) name
|
||||
else moduleToAttrs moduleResources;
|
||||
in nameValuePair type.attrName
|
||||
(if moduleDefinition.assignAsDefaults
|
||||
then mkAllDefault moduleConfig 1000
|
||||
else moduleConfig)
|
||||
) module.configuration.kubernetes.api.types
|
||||
) config.kubernetes.modules
|
||||
);
|
||||
moduleConfig =
|
||||
if moduleDefinition.prefixResources && type.kind != "CustomResourceDefinition"
|
||||
then prefixResources (moduleToAttrs moduleResources) name
|
||||
else moduleToAttrs moduleResources;
|
||||
in nameValuePair type.attrName
|
||||
(if moduleDefinition.assignAsDefaults
|
||||
then mkAllDefault moduleConfig 1000
|
||||
else moduleConfig)
|
||||
) module.configuration.kubernetes.api.types
|
||||
) config.kubernetes.modules
|
||||
);
|
||||
|
||||
# custom resources are now included in normal resources, so just make an alias
|
||||
kubernetes.customResources = mkAliasDefinitions options.kubernetes.resources;
|
||||
# create custom types from CRDs was old behavior
|
||||
createCustomTypesFromCRDs = true;
|
||||
|
||||
# create custom types from CRDs was old behavior
|
||||
kubernetes.createCustomTypesFromCRDs = true;
|
||||
|
||||
kubernetes.defaultModuleConfiguration.all = {
|
||||
_file = head options.kubernetes.defaultModuleConfiguration.files;
|
||||
config.kubernetes.version = mkDefault config.kubernetes.version;
|
||||
config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions;
|
||||
};
|
||||
defaultModuleConfiguration.all = {
|
||||
_file = head options.kubernetes.defaultModuleConfiguration.files;
|
||||
config.kubernetes.version = mkDefault config.kubernetes.version;
|
||||
config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions;
|
||||
};
|
||||
} {
|
||||
resources = mkAliasDefinitions options.kubernetes.customResources;
|
||||
}];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue