mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 08:00:06 +01:00
feat(legacy): improve legacy support, add more tests
This commit is contained in:
parent
086780088c
commit
29b1140178
5 changed files with 189 additions and 74 deletions
108
tests/legacy/modules.nix
Normal file
108
tests/legacy/modules.nix
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
{ options, config, lib, kubenix, pkgs, k8sVersion, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
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 {
|
||||
imports = with kubenix.modules; [ test k8s legacy ];
|
||||
|
||||
test = {
|
||||
name = "legacy-modules";
|
||||
description = "Simple test tesing kubenix legacy modules";
|
||||
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";
|
||||
}];
|
||||
};
|
||||
|
||||
kubernetes.version = k8sVersion;
|
||||
|
||||
kubernetes.defaults.all.metadata.labels.module-label = "value";
|
||||
|
||||
# propagate default module configuration and defaults
|
||||
kubernetes.defaultModuleConfiguration = {
|
||||
all.kubernetes.defaultModuleConfiguration = mkAliasDefinitions options.kubernetes.defaultModuleConfiguration;
|
||||
all.kubernetes.defaults = mkAliasDefinitions options.kubernetes.defaults;
|
||||
};
|
||||
|
||||
kubernetes.moduleDefinitions.app1.module = { config, k8s, module, ... }: {
|
||||
config.kubernetes.resources.deployments.app = {
|
||||
metadata.name = module.name;
|
||||
spec = {
|
||||
selector = {
|
||||
matchLabels.app = "app";
|
||||
};
|
||||
template.spec = {
|
||||
containers.app = {
|
||||
image = "hello-world";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
kubernetes.moduleDefinitions.app2.module = { name, config, k8s, module, ... }: {
|
||||
options = {
|
||||
replicas = mkOption {
|
||||
description = "Number of replicas to run";
|
||||
type = types.int;
|
||||
default = 2;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
kubernetes.resources.deployments.app = {
|
||||
metadata.name = module.name;
|
||||
spec = {
|
||||
replicas = config.replicas;
|
||||
selector = {
|
||||
matchLabels.app = "app";
|
||||
};
|
||||
template.spec = {
|
||||
containers.app = {
|
||||
image = "hello-world";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
kubernetes.modules.app2 = {
|
||||
name = "${name}-app2";
|
||||
module = "app1";
|
||||
namespace = module.namespace;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
kubernetes.modules.myapp = {
|
||||
module = "app1";
|
||||
namespace = "test";
|
||||
};
|
||||
|
||||
kubernetes.modules.myapp2 = {
|
||||
module = "app2";
|
||||
namespace = "test";
|
||||
configuration.replicas = 3;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue