mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 16:10:05 +01:00
Merge pull request #2 from xtruder/fix/debugging
Improve debugging, change k8s default version
This commit is contained in:
commit
bc37b314ee
2 changed files with 32 additions and 12 deletions
|
|
@ -325,7 +325,7 @@ in {
|
||||||
options.kubernetes.version = mkOption {
|
options.kubernetes.version = mkOption {
|
||||||
description = "Kubernetes version to deploy to";
|
description = "Kubernetes version to deploy to";
|
||||||
type = types.enum (attrNames versionDefinitions);
|
type = types.enum (attrNames versionDefinitions);
|
||||||
default = "1.7";
|
default = "1.9";
|
||||||
};
|
};
|
||||||
|
|
||||||
options.kubernetes.resources = mkOption {
|
options.kubernetes.resources = mkOption {
|
||||||
|
|
|
||||||
42
modules.nix
42
modules.nix
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, lib, pkgs, k8s, module ? null, ... }:
|
{ config, options, lib, pkgs, k8s, module ? null, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
with import ./lib.nix { inherit pkgs lib; };
|
with import ./lib.nix { inherit pkgs lib; };
|
||||||
|
|
@ -48,16 +48,33 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
mkModuleOptions = moduleDefinition: module:
|
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.k8s = k8s;
|
||||||
_module.args.name = module.name;
|
_module.args.name = module.name;
|
||||||
_module.args.module = module;
|
_module.args.module = module;
|
||||||
}
|
}
|
||||||
./kubernetes.nix
|
./kubernetes.nix
|
||||||
./modules.nix
|
./modules.nix
|
||||||
(moduleDefinition.module)
|
(injectModuleAttrs moduleDefinition.module {_file = file;})
|
||||||
{
|
{
|
||||||
config.kubernetes.defaults.all.metadata.namespace = mkOptionDefault module.namespace;
|
config.kubernetes.defaults.all.metadata.namespace = mkOptionDefault module.namespace;
|
||||||
}
|
}
|
||||||
|
|
@ -80,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";
|
||||||
|
|
@ -154,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 = {};
|
||||||
};
|
};
|
||||||
|
|
@ -174,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
|
||||||
|
|
@ -188,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
|
||||||
|
|
@ -201,6 +220,7 @@ in {
|
||||||
);
|
);
|
||||||
|
|
||||||
kubernetes.defaultModuleConfiguration.all = {
|
kubernetes.defaultModuleConfiguration.all = {
|
||||||
|
_file = head options.kubernetes.defaultModuleConfiguration.files;
|
||||||
config.kubernetes.version = mkDefault config.kubernetes.version;
|
config.kubernetes.version = mkDefault config.kubernetes.version;
|
||||||
config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions;
|
config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue