| author | Tero Marttila <terom@paivola.fi> |
| Mon, 16 Dec 2013 20:49:14 +0200 | |
| changeset 281 | b236f689ba22 |
| parent 271 | 4dfa1a939153 |
| child 284 | eb7e2a4c6880 |
| permissions | -rwxr-xr-x |
|
271
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
import pvl.args |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
import pvl.hosts |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
import configobj |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
import logging; log = logging.getLogger('pvl.hosts-dhcp')
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
import optparse |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
def process_hosts (options, hosts) : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
for host in hosts : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
if host.owner : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
yield u"# {owner}".format(owner=host.owner)
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
for index, ethernet in enumerate(host.ethernet) : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
if len(host.ethernet) > 1 : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
yield "host {host}-{index} {{".format(host=host, index=index)
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
else : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
yield "host {host} {{".format(host=host)
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
yield '\toption host-name "{host}";'.format(host=host)
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
yield "\thardware ethernet {ethernet};".format(ethernet=ethernet)
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
if host.ip : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
yield "\tfixed-address {ip};".format(ip=host.ip)
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
yield "}" |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
yield "" |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
def apply_conf (options, lines) : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
for line in lines : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
print line |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
def main (argv) : |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
""" |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
Generate DHCP host configs from host definitions. |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
""" |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
parser = optparse.OptionParser(main.__doc__) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
parser.add_option_group(pvl.args.parser(parser)) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
parser.add_option_group(pvl.hosts.optparser(parser)) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
options, args = parser.parse_args(argv[1:]) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
pvl.args.apply(options) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
# input |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
hosts = pvl.hosts.apply(options, args) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
# process |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
apply_conf(options, process_hosts(options, hosts)) |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
|
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
if __name__ == '__main__': |
|
4dfa1a939153
pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
pvl.args.main(main) |