#!/usr/bin/env python2
#####################################################################

from nelmon import constants as C
from nelmon.common import nelmon_exit
from nelmon.globals import NelmonGlobals
from nelmon.snmp_oids import synology_oids as O
from nelmon.snmp import NelmonSnmp, SnmpArguments

NelmonGlobals(PLUGIN_VERSION='1.0')

description = """This plugin queries a Cisco ASA device by SNMP to check how many
current connections are established through the firewall.

"""

# For more information about this plugin visit:
# http://networklore.com/check-asa-connections/



def is_normal(value):
    if value == 1:
        return True
    return False

def main():

    argparser = SnmpArguments(description)
    argparser.parser.add_argument('-w',
        help='Number of connections to report warning state',
        action='store_true')
    argparser.parser.add_argument('-c',
        help='Number of connections to report critical state',
        action='store_true')

    args = argparser.parser.parse_nelmon_args()
    #if not args.c and not args.w:
    #    nelmon_exit(C.UNKNOWN, 'Use -w or -c')

    critical = False
    warning = False
    normal = {}
    failed = {}
    snmp = NelmonSnmp(args)
    oids = []
    oids.append(O.synoSystem)
    oids.append(O.diskEntry)
    oids.append(O.raidEntry)
    var_table = snmp.getnext(*oids)
    for varbinds in var_table:
        for oid, value in varbinds:
            if O.synoSystem in oid:
                print "Syno System"
                if O.systemStatus in oid:
                    if is_normal(value):
                        normal['system'] = 'System status: Normal'
                    else:
                        critical = True
                        failed['system'] = 'System status: Failed'
                if O.powerStatus in oid:
                    if is_normal(value):
                        normal['power'] = 'Power status: Normal'
                    else:
                        critical = True
                        failed['power'] = 'Power status: Failed'
                if O.systemFanStatus in oid:
                    if is_normal(value):
                        normal['fan'] = 'System fan status: Normal'
                    else:
                        critical = True
                        failed['fan'] = 'System Fan status: Failed'


            if O.synoDisk in oid:
                print "Syno Disk"
            if O.synoRaid in oid:
                print "Syno Raid"

            print "%s - %s" % (oid, value)

    print normal
    print failed
    '''
    if args.c <= connections:
        exit_code = C.CRITICAL
        exit_string = "%d connections" % connections
    elif args.w <= connections:
        exit_code = C.WARNING
        exit_string = "%d connections" % connections
    else:
        exit_code = C.OK
        exit_string = "%d connections" % connections
    '''

    exit_code = C.OK
    exit_string = "."
    nelmon_exit(exit_code, exit_string)

if __name__ == "__main__":
    main()
