Optimize DHCP API requests
This commit is contained in:
parent
93c596c38e
commit
7ce469585b
2 changed files with 20 additions and 27 deletions
43
main.py
43
main.py
|
@ -12,38 +12,31 @@ hostname = config.get('Re2o', 'hostname')
|
||||||
password = config.get('Re2o', 'password')
|
password = config.get('Re2o', 'password')
|
||||||
username = config.get('Re2o', 'username')
|
username = config.get('Re2o', 'username')
|
||||||
|
|
||||||
|
|
||||||
|
host_mac_ip = {}
|
||||||
api_client = Re2oAPIClient(hostname, username, password)
|
api_client = Re2oAPIClient(hostname, username, password)
|
||||||
domains = api_client.list_domains()
|
|
||||||
|
|
||||||
extensions = api_client.list_extensions()
|
for hmi in api_client.list_hostmacip(params={'page_size': 'all'}):
|
||||||
|
if hmi['extension'] not in host_mac_ip.keys():
|
||||||
|
host_mac_ip[hmi['extension']] = []
|
||||||
|
host_mac_ip[hmi['extension']].append((hmi['hostname'],
|
||||||
|
hmi['mac_address'],
|
||||||
|
hmi['ipv4']))
|
||||||
|
|
||||||
for extension in extensions:
|
template = ("host {hostname}{extension} {{\n"
|
||||||
|
" hardware ethernet {mac_address};\n"
|
||||||
host_mac_ip = []
|
" fixed-address {ipv4};\n"
|
||||||
for domain in domains:
|
"}}")
|
||||||
if domain['interface_parent'] is not None and \
|
|
||||||
api_client.get(domain['extension'])['name'] == extension['name']:
|
|
||||||
interface = api_client.get(domain['interface_parent'])
|
|
||||||
if interface['active']:
|
|
||||||
host_mac_ip.append((
|
|
||||||
domain['name'],
|
|
||||||
interface['mac_address'],
|
|
||||||
api_client.get(interface['ipv4'])['ipv4']
|
|
||||||
))
|
|
||||||
|
|
||||||
template = ("host {hostname}{extension} {{\n"
|
|
||||||
" hardware ethernet {mac};\n"
|
|
||||||
" fixed-address {ipv4};\n"
|
|
||||||
"}}")
|
|
||||||
|
|
||||||
|
for extension, hmi_list in host_mac_ip.items():
|
||||||
dhcp_leases_content = '\n\n'.join(template.format(
|
dhcp_leases_content = '\n\n'.join(template.format(
|
||||||
hostname=hostname,
|
hostname=hostname,
|
||||||
extension=extension['name'],
|
extension=extension,
|
||||||
mac=mac,
|
mac_address=mac_address,
|
||||||
ipv4=ip
|
ipv4=ipv4
|
||||||
) for hostname, mac, ip in host_mac_ip)
|
) for hostname, mac_address, ipv4 in hmi_list)
|
||||||
|
|
||||||
filename = 'dhcp-{extension}.list'.format(extension=extension['name'][1:])
|
filename = 'dhcp{extension}.list'.format(extension=extension)
|
||||||
with open(filename, 'w+') as f:
|
with open(filename, 'w+') as f:
|
||||||
f.write(dhcp_leases_content)
|
f.write(dhcp_leases_content)
|
||||||
|
|
||||||
|
|
2
re2oapi
2
re2oapi
|
@ -1 +1 @@
|
||||||
Subproject commit f151d483dc1c9bd59b18ea283ab734c91a72e18c
|
Subproject commit de759e417d1046306372bf47a12f513b112dc6de
|
Loading…
Reference in a new issue