#!/usr/bin/python

import sys
import argparse

from os_nagios.plugins import base, virt


def libvirt_connect_handler(args):
    return virt.connect_plugin(args.verbose, args.method, args.host, args.path)


def get_argparser():
    parser = argparse.ArgumentParser(description='Libvirt plugins for Nagios.')
    parser.add_argument('-v', '--verbose', type=int, default=0,
                        choices=range(0, 4),
                        help='Verbose output mode, available (0,1,2,3)')

    subparsers = parser.add_subparsers()

    p = subparsers.add_parser('connect', help='Libvirt connection plugin.')
    p.set_defaults(handler=libvirt_connect_handler)
    p.add_argument('-H', '--host', help='Host address.')
    p.add_argument('-m', '--method', default='qemu',
                   help='Libvirt connection method.')
    p.add_argument('-p', '--path', default='/system',
                   help='Connection to daemon.')

    return parser


def main(args):
    def return_result(code, message):
        # TODO: support verbose modes (0,1,2,3)
        sys.stdout.write(message[0][0])
        sys.stdout.write('\n')
        sys.stdout.flush()
        sys.exit(code)

    try:
        (code, message) = args.handler(args)
    except Exception as errmsg:
        msg = "Plugin error - '%s'" % (errmsg,)
        return_result(base.RET_UNKNOWN, [(msg, None)])
    else:
        return_result(code, message)


if __name__ == '__main__':
    parser = get_argparser()
    args = parser.parse_args()
    main(args)
