This commit is contained in:
David Arnold 2021-05-13 17:27:08 -04:00
parent c3fa598922
commit db6d83c61e
No known key found for this signature in database
GPG key ID: 6D6A936E69C59D08
53 changed files with 1916 additions and 1599 deletions

View file

@ -1,16 +1,18 @@
{ options, config, lib, kubenix, pkgs, ... }:
with lib;
let
findObject = { kind, name }: filter (object:
object.kind == kind && object.metadata.name == name
) config.kubernetes.objects;
findObject = { kind, name }: filter
(object:
object.kind == kind && object.metadata.name == name
)
config.kubernetes.objects;
getObject = filter: head (findObject filter);
hasObject = { kind, name }: length (findObject { inherit kind name; }) == 1;
in {
in
{
imports = with kubenix.modules; [ test k8s legacy ];
test = {
@ -20,12 +22,13 @@ in {
assertions = [{
message = "should define crd in module";
assertion =
hasObject {kind = "SecretClaim"; name = "module-claim";};
} {
message = "should define crd in root";
assertion =
hasObject {kind = "SecretClaim"; name = "root-claim";};
}];
hasObject { kind = "SecretClaim"; name = "module-claim"; };
}
{
message = "should define crd in root";
assertion =
hasObject { kind = "SecretClaim"; name = "root-claim"; };
}];
};
kubernetes.namespace = "test";
@ -40,7 +43,7 @@ in {
type = mkOption {
description = "Type of the secret";
type = types.enum ["Opaque" "kubernetes.io/tls"];
type = types.enum [ "Opaque" "kubernetes.io/tls" ];
default = "Opaque";
};
@ -62,7 +65,7 @@ in {
};
};
config = {
config = {
kubernetes.resources.customResourceDefinitions.secret-claims = {
kind = "CustomResourceDefinition";
apiVersion = "apiextensions.k8s.io/v1beta1";
@ -74,7 +77,7 @@ in {
names = {
plural = "secretclaims";
kind = "SecretClaim";
shortNames = ["scl"];
shortNames = [ "scl" ];
};
};
};

View file

@ -1,10 +1,10 @@
{ config, lib, kubenix, pkgs, ... }:
with lib;
let
cfg = config.kubernetes.api.resources.deployments.app;
in {
in
{
imports = with kubenix.modules; [ test k8s legacy ];
test = {
@ -15,13 +15,14 @@ in {
assertion =
cfg.kind == "Deployment" &&
cfg.metadata.name == "app";
} {
message = "should have correct defaults set";
assertion =
cfg.metadata.namespace == "test" &&
cfg.metadata.labels.label1 == "value1" &&
cfg.metadata.labels.label2 == "value2";
}];
}
{
message = "should have correct defaults set";
assertion =
cfg.metadata.namespace == "test" &&
cfg.metadata.labels.label1 == "value1" &&
cfg.metadata.labels.label2 == "value2";
}];
};
kubernetes.resources.deployments.app = {
@ -39,7 +40,7 @@ in {
};
kubernetes.resources.configMaps.app = {
data."my-conf.json" = builtins.toJSON {};
data."my-conf.json" = builtins.toJSON { };
};
kubernetes.defaults = {

View file

@ -1,16 +1,18 @@
{ options, config, lib, kubenix, pkgs, ... }:
with lib;
let
findObject = { kind, name }: filter (object:
object.kind == kind && object.metadata.name == name
) config.kubernetes.objects;
findObject = { kind, name }: filter
(object:
object.kind == kind && object.metadata.name == name
)
config.kubernetes.objects;
getObject = filter: head (findObject filter);
hasObject = { kind, name }: length (findObject { inherit kind name; }) == 1;
in {
in
{
imports = with kubenix.modules; [ test k8s legacy ];
test = {
@ -19,21 +21,21 @@ in {
assertions = [{
message = "should have all objects";
assertion =
hasObject {kind = "Deployment"; name = "myapp";} &&
hasObject {kind = "Deployment"; name = "myapp2";} &&
hasObject {kind = "Deployment"; name = "myapp2-app2";};
} {
message = "should have default labels set";
assertion =
(getObject {kind = "Deployment"; name = "myapp2-app2";})
.metadata.labels.module-label or false == "value" &&
(getObject {kind = "Deployment"; name = "myapp2";})
.metadata.labels.module-label or false == "value";
} {
message = "should passthru resources to root module";
assertion =
config.kubernetes.resources.deployments.myapp2-app2-app.metadata.labels.module-label or false == "value";
}];
hasObject { kind = "Deployment"; name = "myapp"; } &&
hasObject { kind = "Deployment"; name = "myapp2"; } &&
hasObject { kind = "Deployment"; name = "myapp2-app2"; };
}
{
message = "should have default labels set";
assertion =
(getObject { kind = "Deployment"; name = "myapp2-app2"; }).metadata.labels.module-label or false == "value" &&
(getObject { kind = "Deployment"; name = "myapp2"; }).metadata.labels.module-label or false == "value";
}
{
message = "should passthru resources to root module";
assertion =
config.kubernetes.resources.deployments.myapp2-app2-app.metadata.labels.module-label or false == "value";
}];
};
kubernetes.defaults.all.metadata.labels.module-label = "value";