#!/usr/bin/python -W ignore::DeprecationWarning

import argparse
import os
import sys
import lap
import pwd
import time
import grp

from glob import glob as ls

def run(runcheckmk=True, runlocal=True):

    print "<<<check_mk>>>"
    print "Version: 1.2-2.lw"
    print "AgentOS: linux"
    print

    # 1 -> Run check-mk based plugins
    if runcheckmk:
        plugin_dir = "/usr/share/locaweb-plugins/check-mk/"
        for plugin in ls(os.path.join(plugin_dir, "*")):
            print "<<<%s>>>" % plugin.split("/")[-1].rsplit(".", 1)[0]
            for line in lap.execute_plugin_local(plugin):
                print line

    print "<<<local>>>"

    # 2 -> Run local forced plugins
    if runlocal:
        plugin_dir = "/usr/share/locaweb-plugins/local/"
        for plugin in ls(os.path.join(plugin_dir, "*")):
            for line in lap.execute_plugin_local(plugin):
                print line

    # 3 -> Run local based on yaml plugins
    for check in lap.load_plugins():
        status, description, perfdata, output = lap.execute_plugin(check)
        print status, description, perfdata, output

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--no-check-mk', action='store_false', dest='runcheckmk', default=True)
    parser.add_argument('--no-local', action='store_false', dest='runlocal', default=True)
    args = parser.parse_args()
    # Run as check-mk user
    try:
        os.setgid(grp.getgrnam("_readproc").gr_gid)
    except:
        pass
    try:
        os.setuid(pwd.getpwnam("check-mk").pw_uid)
    except:
        print "Cannot find user check-mk, i dont like r00t"
        sys.exit(1)
    else:
        run(args.runcheckmk, args.runlocal)
