Refactor(inventory/constraints): use explizit dependency injections instead of specialArgs
This commit is contained in:
@@ -1,9 +1,12 @@
|
|||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
resolvedRoles,
|
resolvedRoles,
|
||||||
instanceName,
|
instanceName,
|
||||||
moduleName,
|
moduleName,
|
||||||
|
allRoles,
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -11,7 +14,7 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./interface.nix
|
(lib.modules.importApply ./interface.nix { inherit allRoles; })
|
||||||
# Role assertions
|
# Role assertions
|
||||||
{
|
{
|
||||||
config.assertions = lib.foldlAttrs (
|
config.assertions = lib.foldlAttrs (
|
||||||
@@ -24,7 +27,7 @@ in
|
|||||||
"${moduleName}.${instanceName}.roles.${roleName}.min" = {
|
"${moduleName}.${instanceName}.roles.${roleName}.min" = {
|
||||||
assertion = memberCount >= roleConstraints.min;
|
assertion = memberCount >= roleConstraints.min;
|
||||||
message = ''
|
message = ''
|
||||||
The ${moduleName} module requires at least ${builtins.toString roleConstraints.min} members of the '${roleName}' role
|
The '${moduleName}' module requires at least ${builtins.toString roleConstraints.min} members of the '${roleName}' role
|
||||||
but found '${builtins.toString memberCount}' members within instance '${instanceName}':
|
but found '${builtins.toString memberCount}' members within instance '${instanceName}':
|
||||||
|
|
||||||
${lib.concatLines members}
|
${lib.concatLines members}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
{
|
||||||
|
allRoles,
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
allRoles,
|
|
||||||
moduleName,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -9,12 +10,6 @@ let
|
|||||||
rolesAttrs = builtins.groupBy lib.id allRoles;
|
rolesAttrs = builtins.groupBy lib.id allRoles;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.serviceName = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = moduleName;
|
|
||||||
readOnly = true;
|
|
||||||
visible = false;
|
|
||||||
};
|
|
||||||
options.roles = lib.mapAttrs (
|
options.roles = lib.mapAttrs (
|
||||||
_name: _:
|
_name: _:
|
||||||
mkOption {
|
mkOption {
|
||||||
|
|||||||
@@ -34,25 +34,33 @@ let
|
|||||||
allModules,
|
allModules,
|
||||||
}:
|
}:
|
||||||
lib.evalModules {
|
lib.evalModules {
|
||||||
specialArgs = {
|
|
||||||
inherit moduleName resolvedRoles instanceName;
|
|
||||||
allRoles = getRoles "inventory.modules" allModules moduleName;
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
(getFrontmatter allModules.${moduleName} moduleName)
|
(getFrontmatter allModules.${moduleName} moduleName)
|
||||||
./interface.nix
|
./interface.nix
|
||||||
|
{
|
||||||
|
constraints.imports = [
|
||||||
|
(lib.modules.importApply ../constraints {
|
||||||
|
inherit moduleName resolvedRoles instanceName;
|
||||||
|
allRoles = getRoles "inventory.modules" allModules moduleName;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# For Documentation purposes only
|
# For Documentation purposes only
|
||||||
frontmatterOptions =
|
frontmatterOptions =
|
||||||
(lib.evalModules {
|
(lib.evalModules {
|
||||||
specialArgs = {
|
|
||||||
moduleName = "{moduleName}";
|
|
||||||
allRoles = [ "{roleName}" ];
|
|
||||||
};
|
|
||||||
modules = [
|
modules = [
|
||||||
./interface.nix
|
./interface.nix
|
||||||
|
{
|
||||||
|
constraints.imports = [
|
||||||
|
(lib.modules.importApply ../constraints {
|
||||||
|
moduleName = "{moduleName}";
|
||||||
|
allRoles = [ "{roleName}" ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}).options;
|
}).options;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
specialArgs,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -76,9 +75,8 @@ in
|
|||||||
```
|
```
|
||||||
'';
|
'';
|
||||||
type = types.submoduleWith {
|
type = types.submoduleWith {
|
||||||
inherit specialArgs;
|
|
||||||
modules = [
|
modules = [
|
||||||
../constraints
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user