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

# NOTE: Careful when replacing the *-import below with a more specific import. This can cause
# problems because it might remove variables from the check-context which are necessary for
# resolving legacy discovery results such as [("SUMMARY", "diskstat_default_levels")]. Furthermore,
# it might also remove variables needed for accessing discovery rulesets.
from cmk.base.check_legacy_includes.fan import *  # pylint: disable=wildcard-import,unused-wildcard-import

# NOTE: Careful when replacing the *-import below with a more specific import. This can cause
# problems because it might remove variables from the check-context which are necessary for
# resolving legacy discovery results such as [("SUMMARY", "diskstat_default_levels")]. Furthermore,
# it might also remove variables needed for accessing discovery rulesets.
from cmk.base.check_legacy_includes.fsc import *  # pylint: disable=wildcard-import,unused-wildcard-import

factory_settings["fsc_fans_default_levels"] = {
    "lower": (2000, 1000),
}


def parse_fsc_fans(info):
    parsed = {}
    for fan_name, rpm_str in info:
        try:
            rpm = int(rpm_str)
        except ValueError:
            continue
        parsed.setdefault(fan_name, rpm)
    return parsed


def inventory_fsc_fans(parsed):
    return [(fan_name, {}) for fan_name in parsed]


@get_parsed_item_data
def check_fsc_fans(item, params, data):
    if isinstance(params, tuple):
        params = {"lower": params}
    return check_fan(data, params)


check_info["fsc_fans"] = {
    "parse_function": parse_fsc_fans,
    "inventory_function": inventory_fsc_fans,
    "check_function": check_fsc_fans,
    "service_description": "FSC %s",
    "snmp_info": (".1.3.6.1.4.1.231.2.10.2.2.5.2.2.1", [16, 8]),
    "snmp_scan_function": is_fsc_fans_prefer_sc2,
    "has_perfdata": True,
    "group": "hw_fans",
    "default_levels_variable": "fsc_fans_default_levels",
}
