fix(nix): require swarm domain only when a hyperhive service is enabled
The swarm.domain assertion in hive-network.nix fired on every host that imported the module, so a host that enables nothing failed eval. It now fires only when one of the hyperhive service switches is on (every deploy.*.enable that runs something, gateway, gateway.dns, network, otel, snapshotStore). The requirement itself is unchanged: any host that runs a hyperhive service still needs swarm.domain. The core-toggle module-eval suite gains a case: a missing swarm.domain is refused on a hive and on a swarm-service-only host, and a host enabling nothing passes every assertion. Closes #4887
This commit is contained in:
parent
eded8f2e4e
commit
fb2fff0668
4 changed files with 71 additions and 13 deletions
|
|
@ -503,6 +503,28 @@ let
|
|||
}
|
||||
&& !(refusedHiveName { deploy.hive-controller.enable = false; });
|
||||
}
|
||||
{
|
||||
# Refused wherever any hyperhive service runs, the hive or a swarm
|
||||
# service alone. The host enabling nothing is the control that it is
|
||||
# gated at all, and has to pass every assertion: it is what an
|
||||
# operator gets from importing the module.
|
||||
name = "a missing swarm.domain is refused on a hive and on a swarm-service host, and a host enabling nothing evaluates";
|
||||
ok =
|
||||
let
|
||||
noDomain = extra: hive ({ swarm.domain = null; } // extra);
|
||||
refusedSwarmDomain =
|
||||
extra:
|
||||
lib.any (
|
||||
a: !a.assertion && lib.hasInfix "services.hyperhive.swarm.domain to be set" a.message
|
||||
) (noDomain extra).assertions;
|
||||
in
|
||||
refusedSwarmDomain { }
|
||||
&& refusedSwarmDomain {
|
||||
deploy.hive-controller.enable = false;
|
||||
deploy.nats.enable = true;
|
||||
}
|
||||
&& lib.all (a: a.assertion) (noDomain { deploy.hive-controller.enable = false; }).assertions;
|
||||
}
|
||||
];
|
||||
in
|
||||
runGroup "core-toggle" cases
|
||||
|
|
|
|||
Loading…
Reference in a new issue