#!/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.fjdarye import *  # pylint: disable=wildcard-import,unused-wildcard-import

# check_mk plugin to monitor storage systems like Fujitsu ETERNUS DX80 S2 supporting FJDARY-E100.MIB
# Copyright (c) 2012 FuH Entwicklungsgesellschaft mbH, Umkirch, Germany. All rights reserved.
# Author: Philipp Hoefflin, 2012, hoefflin+cmk@fuh-e.de

# example snmpwalk output:
# snmpwalk -c public -v 1 dx80 .1.3.6.1.4.1.211.1.21.1.100.2.19.2.1.1
# FJDARY-E100::fjdaryDiskStatus.0 = INTEGER: spare(65)
# FJDARY-E100::fjdaryDiskStatus.1 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.2 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.3 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.4 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.5 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.6 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.7 = INTEGER: available(1)
# FJDARY-E100::fjdaryDiskStatus.8 = INTEGER: notavailable(3)
# FJDARY-E100::fjdaryDiskStatus.9 = INTEGER: notavailable(3)
# FJDARY-E100::fjdaryDiskStatus.10 = INTEGER: notavailable(3)
# FJDARY-E100::fjdaryDiskStatus.11 = INTEGER: notavailable(3)
# FJDARY-E100::fjdaryDiskStatus.12 = INTEGER: notavailable(3)
# snmpwalk -c public -v 1 dx80 .1.3.6.1.4.1.211.1.21.1.100.2.19.2.1.3
# FJDARY-E100::fjdaryDiskIndex.0 = INTEGER: 0
# FJDARY-E100::fjdaryDiskIndex.1 = INTEGER: 1
# FJDARY-E100::fjdaryDiskIndex.2 = INTEGER: 2
# FJDARY-E100::fjdaryDiskIndex.3 = INTEGER: 3
# FJDARY-E100::fjdaryDiskIndex.4 = INTEGER: 4
# FJDARY-E100::fjdaryDiskIndex.5 = INTEGER: 5
# FJDARY-E100::fjdaryDiskIndex.6 = INTEGER: 6
# FJDARY-E100::fjdaryDiskIndex.7 = INTEGER: 7
# FJDARY-E100::fjdaryDiskIndex.8 = INTEGER: 8
# FJDARY-E100::fjdaryDiskIndex.9 = INTEGER: 9
# FJDARY-E100::fjdaryDiskIndex.10 = INTEGER: 10
# FJDARY-E100::fjdaryDiskIndex.11 = INTEGER: 11
# FJDARY-E100::fjdaryDiskIndex.12 = INTEGER: 12

check_info["fjdarye100_disks"] = {
    "parse_function": parse_fjdarye_disks,
    "inventory_function": inventory_fjdarye_disks,
    "check_function": check_fjdarye_disks,
    "service_description": "Disk %s",
    "snmp_info": (".1.3.6.1.4.1.211.1.21.1.100.2.19.2.1", [1, 3]),
    "snmp_scan_function": lambda oid: oid(".1.3.6.1.2.1.1.2.0") == ".1.3.6.1.4.1.211.1.21.1.100",
    "group": "raid_disk",
}

check_info["fjdarye100_disks.summary"] = {
    "inventory_function": inventory_fjdarye_disks_summary,
    "check_function": check_fjdarye_disks_summary,
    "service_description": "Disk summary",
    "snmp_info": (".1.3.6.1.4.1.211.1.21.1.100.2.19.2.1", [1, 3]),
    "snmp_scan_function": lambda oid: oid(".1.3.6.1.2.1.1.2.0") == ".1.3.6.1.4.1.211.1.21.1.100",
    "group": "raid_summary",
}
