#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
sys.path.append("/usr/scripts/gestion")

import hptools

dico_courbes_gen = {
    'car' : {'titre' : u"Etat des cartouches",
             'vlabel' : "nb de pages restantes",
             'lower-limit' : 0,
             'upper-limit' : 30000,
             'warning' : "2000:",
             'critical' : "500:",
             'dico' : {
                        'car_bla' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.1.0","Cartouche noir","000000"),
                        'car_cya' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.2.0","Cartouche cyan","00ffff"),
                        'car_mag' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.3.0","Cartouche magenta","ff00ff"),
                        'car_yel' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.4.0","Cartouche jaune","ffff00")
                        }},
    'car-p' : {'titre' : u"Etat des cartouches (pourcentage)",
               'vlabel' : "pourcentage restant",
               'lower-limit' : 0,
               'upper-limit' : 100,
               'dico' : {
                        'car_p_bla' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.18.1.0","Cartouche noir","000000"),
                        'car_p_cya' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.18.2.0","Cartouche cyan","00ffff"),
                        'car_p_mag' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.18.3.0","Cartouche magenta","ff00ff"),
                        'car_p_yel' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.18.4.0","Cartouche jaune","ffff00")
                    }},
    'tam' : {'titre' : u"Etat des tambours",
             'vlabel' : "nb de pages restantes",
             'lower-limit' : 0,
             'upper-limit' : 40000,
             'warning' : "2000:",
             'critical' : "500:",
             'dico' : {
                    'tam_bla' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.5.0","Tambour d'imagerie noir","000000"),
                    'tam_cya' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.6.0","Tambour d'imagerie cyan","00ffff"),
                    'tam_mag' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.7.0","Tambour d'imagerie magenta","ff00ff"),
                    'tam_yel' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.8.0","Tambour d'imagerie jaune","ffff00"),
                    }},
    'tam-p' : {'titre' : u"Etat des tambours (pourcentage)",
               'vlabel' : "Pourcentage restant",
               'lower-limit' : 0,
               'upper-limit' : 100,
               'dico' : {
                    'tam_p_bla' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.37.5.0","Tambour d'imagerie noir","000000"),
                    'tam_p_cya' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.37.6.0","Tambour d'imagerie cyan","00ffff"),
                    'tam_p_mag' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.37.7.0","Tambour d'imagerie magenta","ff00ff"),
                    'tam_p_yel' : ("enterprises.11.2.3.9.4.2.1.4.1.10.1.1.37.8.0","Tambour d'imagerie jaune","ffff00"),
                    }},
    'stock-papier' : {'titre' : "Stock papier",
               'vlabel' : "nb de pages restantes",
               'lower-limit' : 0,
               'upper-limit' : 2000,
               'dico' : {
                    'tray6'     : ("1.3.6.1.2.1.43.8.2.1.10.1.6","Feuilles A4","3333ff"),
                    'tray6_max' : ("1.3.6.1.2.1.43.8.2.1.9.1.6","Feuilles A4 (max)","0000cc"),
                    'tray3'     : ("1.3.6.1.2.1.43.8.2.1.10.1.3","Feuilles A3","33ff33"),
                    'tray3_max' : ("1.3.6.1.2.1.43.8.2.1.9.1.3","Feuilles A3 (max)","00cc00"),
                    'tray2'     : ("1.3.6.1.2.1.43.8.2.1.10.1.2","Cartons","ff3333"),
                    'tray2_max' : ("1.3.6.1.2.1.43.8.2.1.9.1.2","Cartons (max)","cc0000"),
                    'tray1'     : ("1.3.6.1.2.1.43.8.2.1.10.1.1","Transparents","ffff33"),
                    'tray1_max' : ("1.3.6.1.2.1.43.8.2.1.9.1.1","Transparents (max)","cccc00"),
                    }},
    'stock-papier-p' : {'titre' : "Stock papier (pourcentage)",
               'vlabel' : "Pourcentage restant",
               'lower-limit' : 0,
               'upper-limit' : 100,
               'dico' : {
                    'tray6' : ("1.3.6.1.2.1.43.8.2.1.10.1.6","Feuilles A4","3333ff"),
                    'tray3' : ("1.3.6.1.2.1.43.8.2.1.10.1.3","Feuilles A3","33ff33"),
                    'tray2' : ("1.3.6.1.2.1.43.8.2.1.10.1.2","Cartons","ff3333"),
                    'tray1' : ("1.3.6.1.2.1.43.8.2.1.10.1.1","Transparents","ffff33"),
                    },
                'max' : {
                    'tray6' : "1.3.6.1.2.1.43.8.2.1.9.1.6",
                    'tray3' : "1.3.6.1.2.1.43.8.2.1.9.1.3",
                    'tray2' : "1.3.6.1.2.1.43.8.2.1.9.1.2",
                    'tray1' : "1.3.6.1.2.1.43.8.2.1.9.1.1",
                    }},
    'kit' : {'titre' : u"Etat des kits images",
             'vlabel' : "nb de pages restantes",
             'lower-limit' : 0,
             'upper-limit' : 150000,
             'warning' : "2000:",
             'critical' : "500:",
             'dico' : {
                    'kit_tra' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.9.0","Kit de transfert image"),
                    'kit_net' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.10.0","Kit de nettoyage image"),
                    'kit_fus' : ("enterprises.11.2.3.9.4.2.1.4.1.10.5.1.1.11.0","Kit de fusion image")
                    }}
    }

#Initialisation du dictionnaire des courbes
arg = sys.argv[0].split('_')[1]
dico_courbes = dico_courbes_gen[arg]['dico']
titre = dico_courbes_gen[arg]['titre']
vlabel = dico_courbes_gen[arg]['vlabel']
lower_limit = dico_courbes_gen[arg]['lower-limit']
upper_limit = dico_courbes_gen[arg]['upper-limit']
warning = dico_courbes_gen[arg].get("warning")
critical = dico_courbes_gen[arg].get("critical")
#########
try :
    max_courbes = dico_courbes_gen[arg]['max']
except :
    max_courbes = []


try :
    arg = sys.argv[1]
except :
    arg = ''
#Ecrit sur la sortie standard la configuration
if arg == "config" :
    print 'host_name laserjet'
    print 'graph_category consommables'
    print "graph_args --lower-limit %i --upper-limit %i --rigid" % (lower_limit,upper_limit)
    print 'graph_title %s' % titre
    print "graph_vlabel %s" % vlabel
    keys = dico_courbes.keys()
    keys.sort()
    for fieldname in keys:
        print "%s.label %s" % (fieldname,dico_courbes[fieldname][1])
        if warning:
            print "%s.warning %s" % (fieldname, warning)
        if critical:
            print "%s.critical %s" % (fieldname, critical)
        if len(dico_courbes[fieldname]) == 3 :
            print "%s.colour %s" % (fieldname,dico_courbes[fieldname][2])
        if len(dico_courbes[fieldname]) == 4 :
            print "%s.draw %s" % (fieldname,dico_courbes[fieldname][3])
else:
#Ecrit les valeurs actuelles sur la sortie standard
    try:
        comm = hptools.snmp(host="laserjet.adm.crans.org",version="1",community="public")
    except Exception,err:
        exit

    for fieldname in dico_courbes.keys():
        try:
            if max_courbes :
                max_val = int(comm.get(max_courbes[fieldname]))
                value = 100*int(comm.get(dico_courbes[fieldname][0]))/max_val
            else :
                value = int(comm.get(dico_courbes[fieldname][0]))
        except Exception,err:
            value = 0
        if value < 0 : value = 0

        print "%s.value %s" % (fieldname,value)
