feat: try rework
This commit is contained in:
parent
1ddbd3b8b6
commit
ecf10628c3
51 changed files with 1941 additions and 445 deletions
40
intermediate/dhcp.nix
Normal file
40
intermediate/dhcp.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
let
|
||||
lib = import <nixpkgs/lib>;
|
||||
net = import ../config/network.nix;
|
||||
networkDevicesValidation = import ../validation/network_devices.nix;
|
||||
|
||||
devices = networkDevicesValidation.getDevices net;
|
||||
localDevices = networkDevicesValidation.getLocalDevices devices;
|
||||
|
||||
reservationRecords = lib.concatLists (lib.mapAttrsToList (deviceName: device:
|
||||
if device ? reservation then
|
||||
let
|
||||
reservation = networkDevicesValidation.validateReservationShape deviceName device.reservation;
|
||||
in
|
||||
[
|
||||
{
|
||||
ip-address = device.ip;
|
||||
hw-address = reservation.hw_address;
|
||||
hostname = reservation.hostname;
|
||||
}
|
||||
]
|
||||
else
|
||||
[]
|
||||
) localDevices);
|
||||
|
||||
ensureUnique = fieldName: values:
|
||||
let
|
||||
uniqueValues = lib.unique values;
|
||||
in
|
||||
if builtins.length uniqueValues != builtins.length values then
|
||||
throw "Duplicate DHCP reservation ${fieldName} found."
|
||||
else
|
||||
null;
|
||||
|
||||
_uniqueIps = ensureUnique "ip-address" (map (reservation: reservation.ip-address) reservationRecords);
|
||||
_uniqueHwAddresses = ensureUnique "hw-address" (map (reservation: reservation.hw-address) reservationRecords);
|
||||
_uniqueHostnames = ensureUnique "hostname" (map (reservation: reservation.hostname) reservationRecords);
|
||||
in
|
||||
rec {
|
||||
reservations = reservationRecords;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue