#!/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_ra32e_switch(info):
    for index, _ in enumerate(info[0], start=1):
        yield "Sensor %02d" % index, None


def check_ra32e_switch(item, params, info):
    index = int(item.split()[-1].lstrip("0")) - 1  # e.g. 'Sensor 08'
    switch_state = {"0": "open", "1": "closed"}.get(info[0][index])
    if not switch_state:
        return 3, "unknown status"

    state, infotext = 0, switch_state
    if params and params != "ignore" and switch_state != params:
        state = 2
        infotext += " (expected %s)" % params

    return state, infotext


check_info["ra32e_switch"] = {
    "inventory_function": inventory_ra32e_switch,
    "check_function": check_ra32e_switch,
    "service_description": "Switch %s",
    "snmp_info": (  # ROOMALERT32E-MIB
        ".1.3.6.1.4.1.20916.1.8.1.3",
        list(range(1, 17)),
    ),  # switch-sen1 to switch-sen16
    "snmp_scan_function": lambda oid: "1.3.6.1.4.1.20916.1.8" in oid(".1.3.6.1.2.1.1.2.0"),
    "group": "switch_contact",
}
