bin/pvl.hosts-dhcp
author Tero Marttila <terom@paivola.fi>
Mon, 09 Mar 2015 23:31:13 +0200
changeset 738 3104fdf7ea26
parent 670 b95ad8c8bb4e
permissions -rwxr-xr-x
pvl.hosts.hosts: drop support for instanced ip.* in favor of improved interface:ip.* =
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 logging; log = logging.getLogger('pvl.hosts-dhcp')
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
import optparse
479
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
     5
import pvl.args
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
     6
import pvl.hosts
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
     7
import pvl.hosts.dhcp
271
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
479
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
     9
def main (argv):
271
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
    """
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
        Generate DHCP host configs from host definitions.
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
    """
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    parser = optparse.OptionParser(main.__doc__)
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    parser.add_option_group(pvl.args.parser(parser))
479
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
    16
    parser.add_option_group(pvl.hosts.config.optparser(parser))
271
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
    # input
479
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
    19
    options, args = pvl.args.parse(parser, argv)
1e68e3a30b51 pvl.hosts.dhcp: split out of script, refactor using pvl.dhcp.config, and test
Tero Marttila <tero.marttila@aalto.fi>
parents: 455
diff changeset
    20
    
670
b95ad8c8bb4e pvl.hosts: fail if no hostfiles are given as input
Tero Marttila <terom@paivola.fi>
parents: 669
diff changeset
    21
    if not args:
b95ad8c8bb4e pvl.hosts: fail if no hostfiles are given as input
Tero Marttila <terom@paivola.fi>
parents: 669
diff changeset
    22
        log.fatal("no hosts given as input")
b95ad8c8bb4e pvl.hosts: fail if no hostfiles are given as input
Tero Marttila <terom@paivola.fi>
parents: 669
diff changeset
    23
        return 1
b95ad8c8bb4e pvl.hosts: fail if no hostfiles are given as input
Tero Marttila <terom@paivola.fi>
parents: 669
diff changeset
    24
    
271
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
    hosts = pvl.hosts.apply(options, args)
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
    # process
482
41622bb9b95c pvl.hosts-dhcp: expect and log HostError
Tero Marttila <tero.marttila@aalto.fi>
parents: 479
diff changeset
    28
    try:
669
83e9bff09a0b pvl.hosts.dhcp: update for pvl.dhcp.config
Tero Marttila <terom@paivola.fi>
parents: 488
diff changeset
    29
        for block in pvl.hosts.dhcp.dhcp_hosts(hosts):
83e9bff09a0b pvl.hosts.dhcp: update for pvl.dhcp.config
Tero Marttila <terom@paivola.fi>
parents: 488
diff changeset
    30
            for line in pvl.dhcp.config.build_block(block):
83e9bff09a0b pvl.hosts.dhcp: update for pvl.dhcp.config
Tero Marttila <terom@paivola.fi>
parents: 488
diff changeset
    31
                print line
83e9bff09a0b pvl.hosts.dhcp: update for pvl.dhcp.config
Tero Marttila <terom@paivola.fi>
parents: 488
diff changeset
    32
            
83e9bff09a0b pvl.hosts.dhcp: update for pvl.dhcp.config
Tero Marttila <terom@paivola.fi>
parents: 488
diff changeset
    33
            print ''
83e9bff09a0b pvl.hosts.dhcp: update for pvl.dhcp.config
Tero Marttila <terom@paivola.fi>
parents: 488
diff changeset
    34
482
41622bb9b95c pvl.hosts-dhcp: expect and log HostError
Tero Marttila <tero.marttila@aalto.fi>
parents: 479
diff changeset
    35
    except pvl.hosts.HostError as error:
41622bb9b95c pvl.hosts-dhcp: expect and log HostError
Tero Marttila <tero.marttila@aalto.fi>
parents: 479
diff changeset
    36
        log.error("%s", error)
41622bb9b95c pvl.hosts-dhcp: expect and log HostError
Tero Marttila <tero.marttila@aalto.fi>
parents: 479
diff changeset
    37
        return 3
271
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
if __name__ == '__main__':
4dfa1a939153 pvl.hosts-dhcp: generate dhcp hosts conf
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
    pvl.args.main(main)