kea_config = { 'Dhcp4': { **node.metadata.get('kea-dhcp-server/config'), 'interfaces-config': { 'interfaces': sorted(node.metadata.get('kea-dhcp-server/subnets', {}).keys()), }, 'subnet4': [], }, 'Server': { 'loggers': [{ 'name': 'kea-dhcp4', 'output_options': [{ # -> journal 'output': 'stdout', }], 'severity': 'WARN', }], }, } for iface, config in sorted(node.metadata.get('kea-dhcp-server/subnets', {}).items()): kea_config['Dhcp4']['subnet4'].append({ 'subnet': config['subnet'], 'pools': [{ 'pool': f'{config["lower"]} - {config["higher"]}', }], 'option-data': [ { 'name': k, 'data': v, } for k, v in sorted(config.get('options', {}).items()) ], 'reservations': [ { 'ip-address': v['ip'], 'hw-address': v['mac'], 'hostname': k, } for k, v in sorted(node.metadata.get(f'kea-dhcp-server/fixed_allocations/{iface}', {}).items()) ] }) # TODO deploy config