fix(modules): throw better error if module with some name does not exist

This commit is contained in:
Jaka Hudoklin 2018-06-28 13:04:02 +02:00
parent f2e717b117
commit 2d51db5ccb

View file

@ -97,6 +97,11 @@ let
type = types.coercedTo types.unspecified (value: [value]) (types.listOf types.unspecified); type = types.coercedTo types.unspecified (value: [value]) (types.listOf types.unspecified);
default = []; default = [];
}) config.kubernetes.moduleDefinitions; }) config.kubernetes.moduleDefinitions;
getModuleDefinition = name:
if hasAttr name config.kubernetes.moduleDefinitions
then config.kubernetes.moduleDefinitions.${name}
else throw ''requested kubernetes moduleDefinition with name "${name}" does not exist'';
in { in {
options.kubernetes.moduleDefinitions = mkOption { options.kubernetes.moduleDefinitions = mkOption {
description = "Attribute set of module definitions"; description = "Attribute set of module definitions";
@ -171,10 +176,7 @@ in {
configuration = mkOption { configuration = mkOption {
description = "Module configuration"; description = "Module configuration";
type = submodule { type = submodule {
imports = imports = mkModuleOptions (getModuleDefinition config.module) config;
if hasAttr config.module globalConfig.kubernetes.moduleDefinitions
then mkModuleOptions globalConfig.kubernetes.moduleDefinitions.${config.module} config
else throw ''Kubernetes moduleDefinition "${config.module}" does not exist'';
}; };
default = {}; default = {};
}; };
@ -191,7 +193,7 @@ in {
config = { config = {
kubernetes.resources = mkMerge ( kubernetes.resources = mkMerge (
mapAttrsToList (name: module: let mapAttrsToList (name: module: let
moduleDefinition = config.kubernetes.moduleDefinitions."${module.module}"; moduleDefinition = getModuleDefinition module.module;
moduleConfig = moduleConfig =
if moduleDefinition.prefixResources if moduleDefinition.prefixResources
then prefixResources (moduleToAttrs module.configuration.kubernetes.resources) name then prefixResources (moduleToAttrs module.configuration.kubernetes.resources) name
@ -205,9 +207,9 @@ in {
kubernetes.customResources = mkMerge ( kubernetes.customResources = mkMerge (
mapAttrsToList (name: module: let mapAttrsToList (name: module: let
moduleDefinition = config.kubernetes.moduleDefinitions."${module.module}"; moduleDefinition = getModuleDefinition module.module;
moduleConfig = moduleConfig =
if config.kubernetes.moduleDefinitions."${module.module}".prefixResources if moduleDefinition.prefixResources
then prefixGroupResources (moduleToAttrs module.configuration.kubernetes.customResources) name then prefixGroupResources (moduleToAttrs module.configuration.kubernetes.customResources) name
else moduleToAttrs module.configuration.kubernetes.customResources; else moduleToAttrs module.configuration.kubernetes.customResources;
in in