bin/pvl.irk
author Tero Marttila <terom@paivola.fi>
Sun, 20 Jan 2013 19:52:41 +0200
changeset 155 9f2967ba81ef
parent 135 ca66a4612e18
permissions -rwxr-xr-x
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
#!/usr/bin/env python

"""
    Test Irk
"""

__version__ = '0.1'

import pvl.args
import pvl.irk

import sys, pvl.syslog.tail # XXX: for sys.stdin

import logging, optparse

log = logging.getLogger('main')

def parse_options (argv) :
    """
        Parse command-line arguments.
    """

    prog = argv[0]

    parser = optparse.OptionParser(
            prog        = prog,
            usage       = '%prog: [options]',
            version     = __version__,

            # module docstring
            description = __doc__,
    )
    
    # options
    parser.add_option_group(pvl.args.parser(parser))
    parser.add_option_group(pvl.irk.parser(parser))
    
    parser.add_option('--join',     action='store_true',    help="Join given targets")
    parser.add_option('--part',     action='store_true',    help="Part given targets")

    # parse
    options, args = parser.parse_args(argv[1:])
    
    # apply
    pvl.args.apply(options, prog)

    return options, args

def main (argv) :
    options, args = parse_options(argv)

    log.info("Connect IRK..")
    irker = pvl.irk.apply(options)

    log.info("Load targets...")
    targets = [irker.target(target, join=options.join) for target in args]

    log.info("Send messages...")
    for line in pvl.syslog.file.File(sys.stdin) :
        log.info("%s", line)

        for target in targets :
            target(line)

    if options.part :
        for target in targets :
            target.part()

    # done
    log.info("Exiting...")
    return 0

if __name__ == '__main__':
    import sys

    sys.exit(main(sys.argv))