defaults = { 'apt': { 'packages': { 'isc-dhcp-server': {}, }, }, } @metadata_reactor def get_static_allocations(metadata): allocations = {} for rnode in repo.nodes_in_group('home'): for identifier, interface in rnode.metadata.get('interfaces', {}).items(): if interface.get('dhcp', False): allocations[rnode.name] = { 'ipv4': sorted(interface['ips'])[0], 'mac': interface['mac'], } return { 'dhcpd': { 'fixed_allocations': allocations, } } @metadata_reactor def get_listen_interfaces(metadata): listen_interfaces = [] for identfier, subnet in node.metadata.get('dhcpd/subnets', {}).items(): listen_interfaces.append(subnet.get('interface')) return { 'dhcpd': { 'listen_interfaces': ' '.join(sorted(listen_interfaces)), } }