allow to pass defaults as attribute sets

This commit is contained in:
Jaka Hudoklin 2017-12-23 20:13:55 +01:00
parent 70d33e20b8
commit 699511bf54
3 changed files with 16 additions and 13 deletions

View file

@ -307,7 +307,8 @@ let
}; };
defaultOptions = mapAttrs (name: value: mkOption { defaultOptions = mapAttrs (name: value: mkOption {
type = types.listOf types.attrs; description = "Kubernetes defaults for ${name} resources";
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
default = []; default = [];
}) versionOptions.${config.kubernetes.version}; }) versionOptions.${config.kubernetes.version};
in { in {
@ -329,7 +330,8 @@ in {
type = types.submodule { type = types.submodule {
options = defaultOptions // { options = defaultOptions // {
all = mkOption { all = mkOption {
type = types.listOf types.attrs; description = "Kubernetes defaults for all resources";
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
default = []; default = [];
}; };
}; };

View file

@ -29,7 +29,8 @@ let
) resources; ) resources;
defaultModuleConfigurationOptions = mapAttrs (name: moduleDefinition: mkOption { defaultModuleConfigurationOptions = mapAttrs (name: moduleDefinition: mkOption {
type = types.listOf types.attrs; description = "Module default configuration for ${name} module";
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
default = []; default = [];
}) config.kubernetes.moduleDefinitions; }) config.kubernetes.moduleDefinitions;
in { in {
@ -57,7 +58,7 @@ in {
options = defaultModuleConfigurationOptions // { options = defaultModuleConfigurationOptions // {
all = mkOption { all = mkOption {
description = "Module default configuration for all modules"; description = "Module default configuration for all modules";
type = types.listOf types.attrs; type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
default = []; default = [];
}; };
}; };
@ -105,8 +106,8 @@ in {
) config.kubernetes.modules ) config.kubernetes.modules
); );
kubernetes.defaultModuleConfiguration.all = [{ kubernetes.defaultModuleConfiguration.all = {
config.kubernetes.version = mkDefault config.kubernetes.version; config.kubernetes.version = mkDefault config.kubernetes.version;
}]; };
}; };
} }

View file

@ -62,14 +62,14 @@ with lib;
kubernetes.resources.services.nginx = loadJSON ./service.json; kubernetes.resources.services.nginx = loadJSON ./service.json;
kubernetes.defaultModuleConfiguration.all = [{ kubernetes.defaultModuleConfiguration.all = {
config.kubernetes.defaults.deployments = [{spec.replicas = 3;}]; config.kubernetes.defaults.deployments.spec.replicas = 3;
}]; };
kubernetes.defaultModuleConfiguration.nginx = [{ kubernetes.defaultModuleConfiguration.nginx = {
kubernetes.defaults.deployments = [{spec.replicas = mkDefault 4;}]; kubernetes.defaults.deployments.spec.replicas = mkDefault 4;
}]; };
kubernetes.defaults.all = [{metadata.namespace = "test";}]; kubernetes.defaults.all.metadata.namespace = "test";
}; };
} }