feat(k8s): beautify a bit

This commit is contained in:
Jaka Hudoklin 2019-02-28 14:04:16 +01:00
parent 9aa861350c
commit ade94ccefa
No known key found for this signature in database
GPG key ID: 6A08896BFD32BD95

View file

@ -3,6 +3,8 @@
with lib; with lib;
let let
cfg = config.kubernetes;
removeKubenixOptions = filterAttrs (name: attr: name != "kubenix"); removeKubenixOptions = filterAttrs (name: attr: name != "kubenix");
getDefaults = resource: group: version: kind: getDefaults = resource: group: version: kind:
@ -11,7 +13,7 @@ let
(default.group == null || default.group == group) && (default.group == null || default.group == group) &&
(default.version == null || default.version == version) && (default.version == null || default.version == version) &&
(default.kind == null || default.kind == kind) (default.kind == null || default.kind == kind)
) config.kubernetes.api.defaults); ) cfg.api.defaults);
moduleToAttrs = value: moduleToAttrs = value:
if isAttrs value if isAttrs value
@ -120,7 +122,7 @@ in {
options.kubernetes.api = mkOption { options.kubernetes.api = mkOption {
type = types.submodule { type = types.submodule {
imports = [ imports = [
(./generated + ''/v'' + config.kubernetes.version + ".nix") (./generated + ''/v'' + cfg.version + ".nix")
apiOptions apiOptions
] ++ (map (cr: {config, ...}: { ] ++ (map (cr: {config, ...}: {
options.${cr.group}.${cr.version}.${cr.kind} = mkOption { options.${cr.group}.${cr.version}.${cr.kind} = mkOption {
@ -158,7 +160,7 @@ in {
})); }));
default = {}; default = {};
}; };
}) config.kubernetes.customResources); }) cfg.customResources);
}; };
default = {}; default = {};
}; };
@ -219,8 +221,8 @@ in {
config.kubernetes.objects = flatten (map (gvk: config.kubernetes.objects = flatten (map (gvk:
mapAttrsToList (name: resource: mapAttrsToList (name: resource:
removeKubenixOptions (moduleToAttrs resource) removeKubenixOptions (moduleToAttrs resource)
) config.kubernetes.api.${gvk.group}.${gvk.version}.${gvk.kind} ) cfg.api.${gvk.group}.${gvk.version}.${gvk.kind}
) config.kubernetes.api.resources); ) cfg.api.resources);
options.kubernetes.generated = mkOption { options.kubernetes.generated = mkOption {
type = types.attrs; type = types.attrs;
@ -228,12 +230,12 @@ in {
}; };
config.kubernetes.generated = let config.kubernetes.generated = let
kubernetesList = toKubernetesList config.kubernetes.objects; kubernetesList = toKubernetesList cfg.objects;
hashedList = kubernetesList // { hashedList = kubernetesList // {
labels."kubenix/build" = config.kubernetes.hash; labels."kubenix/build" = cfg.hash;
items = map (resource: recursiveUpdate resource { items = map (resource: recursiveUpdate resource {
metadata.labels."kubenix/build" = config.kubernetes.hash; metadata.labels."kubenix/build" = cfg.hash;
}) kubernetesList.items; }) kubernetesList.items;
}; };
in hashedList; in hashedList;
@ -243,5 +245,5 @@ in {
description = "Output hash"; description = "Output hash";
}; };
config.kubernetes.hash = builtins.hashString "sha1" (builtins.toJSON config.kubernetes.objects); config.kubernetes.hash = builtins.hashString "sha1" (builtins.toJSON cfg.objects);
} }