From b80d09c08800a7da54fce741ab0b5b6295bf653b Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Thu, 28 Jun 2018 13:01:39 +0200 Subject: [PATCH 1/3] feat(kubernetes): change default version of k8s to 1.9 --- kubernetes.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes.nix b/kubernetes.nix index 9a13614..a88e425 100644 --- a/kubernetes.nix +++ b/kubernetes.nix @@ -325,7 +325,7 @@ in { options.kubernetes.version = mkOption { description = "Kubernetes version to deploy to"; type = types.enum (attrNames versionDefinitions); - default = "1.7"; + default = "1.9"; }; options.kubernetes.resources = mkOption { From f2e717b1171ee92f2247854ccff6b6946b93d49e Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Thu, 28 Jun 2018 13:03:21 +0200 Subject: [PATCH 2/3] fix(modules): pass file where module is defined info for easier debugging --- modules.nix | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/modules.nix b/modules.nix index 5ef2822..5201c03 100644 --- a/modules.nix +++ b/modules.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, k8s, module ? null, ... }: +{ config, options, lib, pkgs, k8s, module ? null, ... }: with lib; with import ./lib.nix { inherit pkgs lib; }; @@ -48,16 +48,33 @@ let }; mkModuleOptions = moduleDefinition: module: - [ + let + # gets file where module is defined by looking into moduleDefinitions + # option. + file = + elemAt options.kubernetes.moduleDefinitions.files ( + (findFirst (i: i > 0) 0 + (imap + (i: def: if hasAttr module.module def then i else 0) + options.kubernetes.moduleDefinitions.definitions + ) + ) - 1 + ); + + injectModuleAttrs = module: attrs: ( + if isFunction module then args: (applyIfFunction file module args) // attrs + else if isAttrs mkOptionDefault.module then module // attrs + else module + ); + in [ { - _file = "${module.name}"; _module.args.k8s = k8s; _module.args.name = module.name; _module.args.module = module; } ./kubernetes.nix ./modules.nix - (moduleDefinition.module) + (injectModuleAttrs moduleDefinition.module {_file = file;}) { config.kubernetes.defaults.all.metadata.namespace = mkOptionDefault module.namespace; } @@ -201,6 +218,7 @@ in { ); kubernetes.defaultModuleConfiguration.all = { + _file = head options.kubernetes.defaultModuleConfiguration.files; config.kubernetes.version = mkDefault config.kubernetes.version; config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions; }; From 2d51db5ccb8498a44c2fe26e398fe6a38de4a5c6 Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Thu, 28 Jun 2018 13:04:02 +0200 Subject: [PATCH 3/3] fix(modules): throw better error if module with some name does not exist --- modules.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/modules.nix b/modules.nix index 5201c03..4114ca0 100644 --- a/modules.nix +++ b/modules.nix @@ -97,6 +97,11 @@ let type = types.coercedTo types.unspecified (value: [value]) (types.listOf types.unspecified); default = []; }) 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 { options.kubernetes.moduleDefinitions = mkOption { description = "Attribute set of module definitions"; @@ -171,10 +176,7 @@ in { configuration = mkOption { description = "Module configuration"; type = submodule { - imports = - if hasAttr config.module globalConfig.kubernetes.moduleDefinitions - then mkModuleOptions globalConfig.kubernetes.moduleDefinitions.${config.module} config - else throw ''Kubernetes moduleDefinition "${config.module}" does not exist''; + imports = mkModuleOptions (getModuleDefinition config.module) config; }; default = {}; }; @@ -191,7 +193,7 @@ in { config = { kubernetes.resources = mkMerge ( mapAttrsToList (name: module: let - moduleDefinition = config.kubernetes.moduleDefinitions."${module.module}"; + moduleDefinition = getModuleDefinition module.module; moduleConfig = if moduleDefinition.prefixResources then prefixResources (moduleToAttrs module.configuration.kubernetes.resources) name @@ -205,9 +207,9 @@ in { kubernetes.customResources = mkMerge ( mapAttrsToList (name: module: let - moduleDefinition = config.kubernetes.moduleDefinitions."${module.module}"; + moduleDefinition = getModuleDefinition module.module; moduleConfig = - if config.kubernetes.moduleDefinitions."${module.module}".prefixResources + if moduleDefinition.prefixResources then prefixGroupResources (moduleToAttrs module.configuration.kubernetes.customResources) name else moduleToAttrs module.configuration.kubernetes.customResources; in