kubenix/tests/module.nix

65 lines
1.8 KiB
Nix
Raw Normal View History

2019-02-25 17:14:48 +01:00
{ name, config, lib, kubenix, images, ... }:
with lib;
let
cfg = config.submodules.instances.test.config;
deployment = cfg.kubernetes.api.deployments.nginx;
in {
imports = [ kubenix.modules.test kubenix.module ];
2019-02-25 17:14:48 +01:00
test = {
name = "module";
description = "Test testing kubenix module";
2019-02-25 17:14:48 +01:00
assertions = [{
message = "Namespace not propagated";
assertion = deployment.metadata.namespace == "test";
} {
message = "Version not propagated";
assertion = cfg.kubernetes.version == config.kubernetes.version;
2019-03-05 22:08:26 +01:00
} {
message = "docker image should be added to exported images";
assertion = (head config.docker.export) == images.nginx;
2019-02-25 17:14:48 +01:00
}];
testScript = ''
2019-03-11 20:51:57 +01:00
$kube->waitUntilSucceeds("docker load < ${images.nginx}");
2019-02-25 17:14:48 +01:00
$kube->waitUntilSucceeds("kubectl apply -f ${toYAML config.kubernetes.generated}");
$kube->succeed("kubectl get deployment -n test | grep -i test-nginx");
$kube->waitUntilSucceeds("kubectl get deployment -n test -o go-template test-nginx --template={{.status.readyReplicas}} | grep 1");
'';
};
submodules.imports = [{
module = {name, config, ...}: {
submodule.name = "nginx";
kubernetes.api.deployments.nginx = {
metadata = {
name = "${name}-nginx";
labels.app = name;
};
spec = {
replicas = 1;
selector.matchLabels.app = "nginx";
template.metadata.labels.app = "nginx";
template.spec = {
containers.nginx = {
2019-03-05 22:08:26 +01:00
image = config.docker.images.nginx.path;
2019-02-25 17:14:48 +01:00
imagePullPolicy = "Never";
};
};
};
};
2019-03-05 22:08:26 +01:00
docker.images.nginx.image = images.nginx;
2019-02-25 17:14:48 +01:00
};
}];
kubernetes.api.namespaces.test = {};
submodules.instances.test = {
submodule = "nginx";
namespace = "test";
};
}