import json def collect_tokens(cfg): vlans = cfg.get('vlans', []) vlan_names = [v.get('name', '') for v in vlans] res_ips_by_vlan, res_hosts_by_vlan = {}, {} for v in vlans: vn = v.get('name', '') if not vn: continue vlan_res = [r for r in cfg.get('dhcp_reservations', []) if r.get('vlan') == vn] res_ips_by_vlan[vn] = [r['ip'] for r in vlan_res if r.get('ip') and r['ip'] != 'dynamic'] res_hosts_by_vlan[vn] = [r['hostname'] for r in vlan_res if r.get('hostname')] filter_opts = '' + ''.join( f'' for n in vlan_names ) return { 'VLAN_FILTER_OPTIONS': filter_opts, 'VLAN_NAMES_AS_OPTIONS': json.dumps([{'value': n, 'label': n} for n in vlan_names]), 'VLAN_SUBNET_INFO_JSON': json.dumps({ v.get('name', ''): {'subnet': v.get('subnet', ''), 'prefix': v.get('subnet_mask', 0)} for v in vlans if v.get('name') and v.get('subnet') }), 'RESERVATION_IPS_BY_VLAN_JSON': json.dumps(res_ips_by_vlan), 'RESERVATION_HOSTNAMES_BY_VLAN_JSON': json.dumps(res_hosts_by_vlan), }