feat(network): add fleet endpoint registry
This commit was merged in pull request #51.
This commit is contained in:
42
lib/network-endpoints.nix
Normal file
42
lib/network-endpoints.nix
Normal file
@@ -0,0 +1,42 @@
|
||||
{ lib }:
|
||||
let
|
||||
endpointOptions = {
|
||||
address = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
example = "10.23.20.126";
|
||||
description = "Expected IP address assigned outside NixOS for this network endpoint.";
|
||||
};
|
||||
};
|
||||
|
||||
endpointType = lib.types.submodule {
|
||||
options = endpointOptions;
|
||||
};
|
||||
|
||||
endpointFields = endpoint: {
|
||||
inherit (endpoint) address;
|
||||
};
|
||||
|
||||
collectFleetEndpoints =
|
||||
hosts:
|
||||
lib.concatMapAttrs (
|
||||
hostName: host:
|
||||
let
|
||||
cfg = host.config.modules.network;
|
||||
hostEndpoint = lib.optionalAttrs (cfg.endpoint.address != null) {
|
||||
${hostName} = endpointFields cfg.endpoint;
|
||||
};
|
||||
guestEndpoints = lib.mapAttrs' (
|
||||
endpointName: endpoint: lib.nameValuePair "${hostName}-${endpointName}" (endpointFields endpoint)
|
||||
) cfg.endpoints;
|
||||
in
|
||||
hostEndpoint // guestEndpoints
|
||||
) hosts;
|
||||
in
|
||||
{
|
||||
inherit
|
||||
collectFleetEndpoints
|
||||
endpointFields
|
||||
endpointOptions
|
||||
endpointType
|
||||
;
|
||||
}
|
||||
Reference in New Issue
Block a user