27 lines
1.2 KiB
Python
27 lines
1.2 KiB
Python
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 = '<option value="all">All VLANs</option>' + ''.join(
|
|
f'<option value="{n}">{n}</option>' 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),
|
|
}
|