#!/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.

avaya_chassis_ps_status_codes = {
    1: (3, "unknown", "Status cannot be determined"),
    2: (1, "empty", "Power supply not installed"),
    3: (0, "up", "Present and supplying power"),
    4: (2, "down", "Failure indicated"),
}


def inventory_avaya_chassis_ps(info):
    for line in info:

        # Discover only installed power supplies
        if line[1] != "2":
            yield line[0], None


def check_avaya_chassis_ps(item, _no_params, info):
    for line in info:
        if line[0] == item:
            ps_status_code = int(line[1])

    status, status_name, description = avaya_chassis_ps_status_codes[ps_status_code]
    return status, "%s (%s)" % (description, status_name)


check_info["avaya_chassis_ps"] = {
    "check_function": check_avaya_chassis_ps,
    "inventory_function": inventory_avaya_chassis_ps,
    "service_description": "Power Supply %s",
    "snmp_info": (
        ".1.3.6.1.4.1.2272.1.4.8.1.1",
        [1, 2],  # rcChasPowerSupplyId
    ),  # rcChasPowerSupplyOperStatus
    "snmp_scan_function": lambda oid: ".1.3.6.1.4.1.2272" in oid(".1.3.6.1.2.1.1.2.0"),
}
