#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2019 tribe29 GmbH - License: GNU General Public License v2
# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and
# conditions defined in the file COPYING, which is part of this source code package.


def inventory_qlogic_sanbox_fabric_element(info):
    inventory = []
    for _fe_status, fe_id in info:
        inventory.append((fe_id, None))
    return inventory


def check_qlogic_sanbox_fabric_element(item, _no_params, info):
    for fe_status, fe_id in info:
        if fe_id == item:
            if fe_status == "1":
                return 0, "Fabric Element %s is online" % fe_id
            elif fe_status == "2":
                return 2, "Fabric Element %s is offline" % fe_id
            elif fe_status == "3":
                return 1, "Fabric Element %s is testing" % fe_id
            elif fe_status == "4":
                return 2, "Fabric Element %s is faulty" % fe_id
            return 3, "Fabric Element %s is in unidentified status %s" % (fe_id, fe_status)

    return 3, "No Fabric Element %s found" % item


check_info["qlogic_sanbox_fabric_element"] = {
    "check_function": check_qlogic_sanbox_fabric_element,
    "inventory_function": inventory_qlogic_sanbox_fabric_element,
    "service_description": "Fabric Element %s",
    "snmp_info": (".1.3.6.1.2.1.75.1.1.4.1", [4, OID_END]),  # fcFeModuleOperStatus
    # .1.3.6.1.4.1.3873.1.14 Qlogic-Switch
    # .1.3.6.1.4.1.3873.1.8  Qlogic-4Gb SAN Switch Module for IBM BladeCenter
    "snmp_scan_function": lambda oid: oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.3873.1.14")
    or oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.3873.1.8"),
}
