bin/pvl.dns-serial
author Tero Marttila <terom@paivola.fi>
Mon, 09 Mar 2015 23:31:13 +0200
changeset 738 3104fdf7ea26
parent 645 0467e1464cca
permissions -rwxr-xr-x
pvl.hosts.hosts: drop support for instanced ip.* in favor of improved interface:ip.* =
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
"""
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
    Update zone serials.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
"""
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
630
18939b861476 quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 246
diff changeset
     7
import logging; log = logging.getLogger('main')
18939b861476 quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 246
diff changeset
     8
import optparse
18939b861476 quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 246
diff changeset
     9
import os.path
18939b861476 quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 246
diff changeset
    10
import pvl.args
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    11
import pvl.dns.serial
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
630
18939b861476 quickfix pvl.dns-zone
Tero Marttila <tero.marttila@aalto.fi>
parents: 246
diff changeset
    13
from pvl.hosts import __version__
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
def parse_options (argv) :
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
        Parse command-line arguments.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
    """
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    19
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    prog = argv[0]
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
    parser = optparse.OptionParser(
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
            prog        = prog,
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    24
            usage       = '%prog: [options] <serial-path> ...',
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
            version     = __version__,
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
            # module docstring
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
            description = __doc__,
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
    )
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    30
    
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    31
    # options
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    32
    parser.add_option_group(pvl.args.parser(parser))
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    34
    parser.add_option('-n', '--noop',       action='store_true',
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    35
            help="Do not actually update serial")
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
    # defaults
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
    parser.set_defaults(
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    39
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
    )
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
    
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
    # parse
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
    options, args = parser.parse_args(argv[1:])
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    44
    
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    45
    # apply
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    46
    pvl.args.apply(options, prog)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
    return options, args
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    50
def process_serial (options, path) :
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
        Read old serial, generate new one, and update file.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
    # read
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
    if os.path.exists(path) :
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
        serial = open(path).read().strip()
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    58
        log.debug("%s: current: %s", path, serial)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
    else :
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    61
        log.warn("%s: Given .serial does not yet exist", path)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
        serial = None
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
    # update
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    65
    serial = pvl.dns.serial.update_serial(serial)
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    66
    
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    67
    if options.noop :
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    68
        log.warn("%s: %s", path, serial)
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    69
    else :
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    70
        # write
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    71
        open(path, 'w').write(serial + '\n')
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
    return serial
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
def main (argv) :
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
    options, args = parse_options(argv)
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
    # serial files to update
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
    for path in args :
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    80
        process_serial(options, path)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
    
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
    return 0
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
if __name__ == '__main__':
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
    import sys
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
    sys.exit(main(sys.argv))