Commit cea539b5 authored by Maël Kervella's avatar Maël Kervella

Check and update need_regen info

parent 0a8c6243
import time
t1 = time.time()
from configparser import ConfigParser from configparser import ConfigParser
import socket
from re2oapi import Re2oAPIClient from re2oapi import Re2oAPIClient
config = ConfigParser() config = ConfigParser()
config.read('config.ini') config.read('config.ini')
hostname = config.get('Re2o', 'hostname') api_hostname = config.get('Re2o', 'hostname')
password = config.get('Re2o', 'password') api_password = config.get('Re2o', 'password')
username = config.get('Re2o', 'username') api_username = config.get('Re2o', 'username')
def regen_dhcp(api_client):
for hmi in api_client.list_hostmacip():
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']))
template = ("host {hostname}{extension} {{\n"
" hardware ethernet {mac_address};\n"
" fixed-address {ipv4};\n"
"}}")
for extension, hmi_list in host_mac_ip.items():
dhcp_leases_content = '\n\n'.join(template.format(
hostname=hostname,
extension=extension,
mac_address=mac_address,
ipv4=ipv4
) for hostname, mac_address, ipv4 in hmi_list)
filename = 'dhcp{extension}.list'.format(extension=extension)
with open(filename, 'w+') as f:
f.write(dhcp_leases_content)
host_mac_ip = {} host_mac_ip = {}
api_client = Re2oAPIClient(hostname, username, password) api_client = Re2oAPIClient(api_hostname, api_username, api_password)
for hmi in api_client.list_hostmacip(params={'page_size': 'all'}): client_hostname = socket.gethostname().split('.', 1)[0]
if hmi['extension'] not in host_mac_ip.keys():
host_mac_ip[hmi['extension']] = [] for service in api_client.list_servicesregen():
host_mac_ip[hmi['extension']].append((hmi['hostname'], if service['hostname'] == client_hostname and \
hmi['mac_address'], service['service_name'] == 'dhcp' and \
hmi['ipv4'])) service['need_regen']:
regen_dhcp(api_client)
template = ("host {hostname}{extension} {{\n" api_client.patch(service['api_url'], data={'need_regen': False})
" hardware ethernet {mac_address};\n"
" fixed-address {ipv4};\n"
"}}")
for extension, hmi_list in host_mac_ip.items():
dhcp_leases_content = '\n\n'.join(template.format(
hostname=hostname,
extension=extension,
mac_address=mac_address,
ipv4=ipv4
) for hostname, mac_address, ipv4 in hmi_list)
filename = 'dhcp{extension}.list'.format(extension=extension)
with open(filename, 'w+') as f:
f.write(dhcp_leases_content)
print(time.time() - t1)
re2oapi @ 7bcd0924
Subproject commit 74fa513e9a0348e6d4ce030c2364a40268c8eef0 Subproject commit 7bcd0924b823cc11a5714b96cc96fe26638ac9c7
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment