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 {
type = types.listOf types.attrs;
description = "Kubernetes defaults for ${name} resources";
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
default = [];
}) versionOptions.${config.kubernetes.version};
in {
@ -329,7 +330,8 @@ in {
type = types.submodule {
options = defaultOptions // {
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 = [];
};
};

View file

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

View file

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