annotate dhcp_hosts_from_lanscape.py @ 300:e9950e0185b0

more hosts
author drewp@bigasterisk.com
date Wed, 07 Aug 2024 00:58:20 -0700
parents 9ec487a381e2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
102
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
1 import subprocess
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
2 import requests
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
3 import tempfile
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
4
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
5 # this would be nice to write a hosts file for dhcp so it gives better names to
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
6 # stuff like webcams, but it needs lanscape to be up.
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
7
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
8 def prepare_dhcp_hosts():
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
9 lanscape_ip = subprocess.check_output([
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
10 'kubectl',
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
11 'get',
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
12 'svc',
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
13 'lanscape',
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
14 "-o=jsonpath={.spec.clusterIP}",
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
15 ],
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
16 encoding='ascii')
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
17 url = f'http://{lanscape_ip}/dnsConfig'
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
18 resp = requests.get(url)
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
19 resp.raise_for_status()
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
20 lanscape_config = resp.json()
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
21
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
22 dhcp_hosts = tempfile.NamedTemporaryFile(mode='wt', encoding='ascii')
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
23 dhcp_hosts.write("# written by pyinfra\n\n")
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
24 for row in lanscape_config['dhcp_table']:
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
25 dhcp_hosts.write(f'{row["mac"]},{row["hostname"]},{row["ip"]},24h\n')
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
26 dhcp_hosts.flush()
9ec487a381e2 refactor prepare_dhcp_hosts
drewp@bigasterisk.com
parents:
diff changeset
27 return dhcp_hosts