fix(modules): fix customResources

This commit is contained in:
Jaka Hudoklin 2018-02-20 23:07:47 +01:00
parent 3eb8bc0731
commit d582830627
4 changed files with 56 additions and 20 deletions

View file

@ -8,7 +8,7 @@ with import ./lib.nix { inherit pkgs; inherit (pkgs) lib; };
let
evalKubernetesModules = configuration: evalModules rec {
modules = [
(import ./kubernetes.nix {})
./kubernetes.nix
./modules.nix configuration
];
args = {

View file

@ -1,5 +1,3 @@
{ customResourceDefinitions ? null }:
{ config, lib, k8s, pkgs, ... }:
with lib;
@ -251,7 +249,7 @@ let
customResourceOptions = mapAttrs (groupName: crd:
mkOption {
description = "Custom resource for ${name}";
description = "Custom resource for ${groupName}";
type = types.attrsOf (types.submodule ({name, ...}: {
options = {
apiVersion = mkOption {
@ -285,11 +283,7 @@ let
}));
default = {};
}
) (
if customResourceDefinitions == null
then config.kubernetes.resources.customResourceDefinitions
else customResourceDefinitions
);
) config.kubernetes.resources.customResourceDefinitions;
in {
inherit swaggerDefinitions definitions exportedDefinitions kubernetesResourceOptions customResourceOptions;
};

View file

@ -54,10 +54,7 @@ let
_module.args.name = module.name;
_module.args.module = module;
}
(import ./kubernetes.nix {
customResourceDefinitions =
config.kubernetes.resources.customResourceDefinitions;
})
./kubernetes.nix
./modules.nix
(moduleDefinition.module)
{
@ -72,6 +69,11 @@ let
mapAttrs' (name: resource: nameValuePair "${serviceName}-${name}" resource) resources
) resources;
prefixGroupResources = resources: serviceName:
mapAttrs' (groupName: resources:
nameValuePair "${serviceName}-${groupName}" resources
) resources;
defaultModuleConfigurationOptions = mapAttrs (name: moduleDefinition: mkOption {
description = "Module default configuration for ${name} module";
type = types.coercedTo types.attrs (value: [value]) (types.listOf types.attrs);
@ -153,7 +155,7 @@ in {
kubernetes.customResources = mkMerge (
mapAttrsToList (name: module:
prefixResources (moduleToAttrs module.configuration.kubernetes.customResources) module.name
prefixGroupResources (moduleToAttrs module.configuration.kubernetes.customResources) module.name
) config.kubernetes.modules
);

View file

@ -1,4 +1,4 @@
{lib, k8s, ...}:
{lib, k8s, config, ...}:
with k8s;
with lib;
@ -40,11 +40,6 @@ with lib;
metadata.name = mkForce "${name}-nginx";
}
];
kubernetes.customResources.cron.my-awesome-cron-object = mkMerge [
(k8s.loadJSON ./cr.json)
{metadata.name = name;}
];
};
};
@ -52,15 +47,60 @@ with lib;
module = "nginx";
configuration.password.name = "test2";
configuration.password.key = "password";
configuration.kubernetes.resources.customResourceDefinitions.secret-claims = {
kind = "CustomResourceDefinition";
apiVersion = "apiextensions.k8s.io/v1beta1";
metadata.name = "secretclaims.vaultproject.io";
spec = {
group = "vaultproject.io";
version = "v1";
scope = "Namespaced";
names = {
plural = "secretclaims";
kind = "SecretClaim";
shortNames = ["scl"];
};
};
};
configuration.kubernetes.customResources.secret-claims.claim = {
metadata.name = "test";
};
};
kubernetes.modules.app-v2 = {
module = "nginx";
configuration.port = 8080;
configuration.kubernetes.modules.subsubmodule = {
module = "nginx";
configuration.kubernetes.resources.customResourceDefinitions.secret-claims = {
kind = "CustomResourceDefinition";
apiVersion = "apiextensions.k8s.io/v1beta1";
metadata.name = "secretclaims.vaultproject.io";
spec = {
group = "vaultproject.io";
version = "v1";
scope = "Namespaced";
names = {
plural = "secretclaims";
kind = "SecretClaim";
shortNames = ["scl"];
};
};
};
configuration.kubernetes.customResources.secret-claims.claim = {
metadata.name = "test";
};
};
};
kubernetes.resources.services.nginx = loadJSON ./service.json;
kubernetes.defaultModuleConfiguration.all = {
config.kubernetes.moduleDefinitions = config.kubernetes.moduleDefinitions;
config.kubernetes.defaults.deployments.spec.replicas = 3;
};