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

factory_settings["ups_eaton_enviroment_default"] = {
    "temp": (40, 50),
    "remote_temp": (40, 50),
    "humidity": (65, 80),
}


def inventory_ups_eaton_enviroment(info):
    if len(info) > 0:
        return [(None, {})]


def check_ups_eaton_enviroment(item, params, info):
    wert = list(map(saveint, info[0]))
    i = 0
    state = 0
    messages = []
    perfdata = []
    for sensor, sensor_name, unit in [
        ("temp", "Temperature", "°C"),
        ("remote_temp", "Remote-Temperature", "°C"),
        ("humidity", "Humidity", "%"),
    ]:

        warn, crit = params.get(sensor)
        perfdata.append((sensor, wert[i], warn, crit))
        text = "%s: %d%s (warn/crit at %d%s/%d%s)" % (
            sensor_name,
            wert[i],
            unit,
            warn,
            unit,
            crit,
            unit,
        )

        if wert[i] >= crit:
            state = 2
            text += "(!!)"
        elif wert[i] >= warn:
            state = max(state, 1)
            text += "(!)"

        i += 1
        messages.append(text)

    return (state, ", ".join(messages), perfdata)


check_info["ups_eaton_enviroment"] = {
    "default_levels_variable": "ups_eaton_enviroment_default",
    "inventory_function": inventory_ups_eaton_enviroment,
    "check_function": check_ups_eaton_enviroment,
    "service_description": "Enviroment",
    "has_perfdata": True,
    "group": "eaton_enviroment",
    "snmp_info": (".1.3.6.1.4.1.534.1.6", [1, 5, 6]),
    "snmp_scan_function": lambda oid: oid(".1.3.6.1.2.1.1.2.0")
    in [".1.3.6.1.4.1.705.1.2", ".1.3.6.1.4.1.534.1", ".1.3.6.1.4.1.705.1"],
}
