#!/usr/bin/python3

import optparse
from htcondorce import rrd, web_utils

def parse_opts():
    parser = optparse.OptionParser()
    # TODO: Provide option descriptions
    parser.add_option("-n", "--name", dest="name")
    parser.add_option("-v", "--value", dest="value")
    parser.add_option("-g", "--group", dest="group", default="none")
    parser.add_option("-t", "--type", dest="type")
    parser.add_option("-S", "--spoof", dest="spoof")
    parser.add_option("--heartbeat", dest="heartbeat", action="store_true")
    # These options are passed when called by GangliaD so they are required
    # even though they are unused
    parser.add_option("-D", "--desc", dest="desc")
    parser.add_option("--slope", dest="slope", help="zero|positive|negative|both|derivative")
    parser.add_option("-c", "--conf", dest="config")
    parser.add_option("-u", "--units", dest="units")
    parser.add_option("-T", "--title", dest="title")
    parser.add_option("-x", "--tmax", dest="tmax")
    parser.add_option("-d", "--dmax", dest="dmax")

    return parser.parse_args()[0]


def main():
    opts = parse_opts()

    if opts.heartbeat:
        return

    if not opts.name:
        return

    if opts.type in ["int8", "uint8", "int16", "uint16", "int32", "uint32"]:
        value = int(opts.value)
    else:
        value = float(opts.value)

    spooldir = web_utils.get_spooldir()
    environ = {'htcondorce.spool': spooldir}

    fname = rrd.check_rrd(environ, None, "metrics", opts.group, opts.name)
    rrd.update(fname, "N:%s" % value)

    fname = rrd.check_rrd(environ, opts.spoof.split(":")[-1], "metrics", opts.group, opts.name)
    rrd.update(fname, "N:%s" % value)


if __name__ == '__main__':
    main()
