bin/pvl.dns-serial
author Tero Marttila <terom@paivola.fi>
Sun, 07 Sep 2014 14:21:56 +0300
changeset 424 e77e967d59b0
parent 246 819320b0cf81
permissions -rwxr-xr-x
hgignore: use glob; ignore snmp mibs
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
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
     7
from pvl.dns import __version__
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
     8
import pvl.dns.serial
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
import os.path
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    12
import pvl.args
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    13
import optparse
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    14
import logging; log = logging.getLogger('main')
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
def parse_options (argv) :
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
        Parse command-line arguments.
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    """
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    20
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
    prog = argv[0]
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
    parser = optparse.OptionParser(
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
            prog        = prog,
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    25
            usage       = '%prog: [options] <serial-path> ...',
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
            version     = __version__,
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
            # module docstring
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
            description = __doc__,
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
    )
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    31
    
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    32
    # options
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    33
    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
    34
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    35
    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
    36
            help="Do not actually update serial")
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
    # defaults
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
    parser.set_defaults(
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    40
233
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
    
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
    # parse
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
    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
    45
    
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    46
    # apply
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    47
    pvl.args.apply(options, prog)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
    return options, args
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    51
def process_serial (options, path) :
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
        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
    54
    """
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
    # read
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
    if os.path.exists(path) :
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
        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
    59
        log.debug("%s: current: %s", path, serial)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
    else :
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    62
        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
    63
        serial = None
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
    # update
234
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    66
    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
    67
    
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    68
    if options.noop :
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    69
        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
    70
    else :
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    71
        # write
472f0a422234 split up pvl.dns-serial into pvl.dns.serial module
Tero Marttila <terom@paivola.fi>
parents: 233
diff changeset
    72
        open(path, 'w').write(serial + '\n')
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
    return serial
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
def main (argv) :
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
    options, args = parse_options(argv)
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
    # serial files to update
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
    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
    81
        process_serial(options, path)
233
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
    
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
    return 0
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
if __name__ == '__main__':
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
    import sys
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
c4941645464c import pvl.dns-* scripts from pvl-dns
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
    sys.exit(main(sys.argv))