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

# This check verifies a given NFS export is registered with mountd.
# Optionally we can add tracking of allowed clients and filesystem ID.

# Agent info
# [['/mirrored/data/recording', '172.0.0.0/255.0.0.0']]


def inventory_nfsexports(info):
    # reminder to self: inventorize the exported fs, and maybe even the fs id.
    # but do not inventorize the allowed clients unless i'm really sure that
    # it's not bugged for "features" like multiple different option exports of
    # same FS.
    inventory = []
    for line in info:
        # will not inventorize unless there is SOME export at inventory time.
        if line[0].startswith("/"):
            inventory.append((line[0], None))

    return inventory


def check_nfsexports(item, _no_params, info):
    # if the agent returned an empty list then it found entries in /etc/exports
    # but apparently no daemons were running.
    if len(info) == 0:
        return (
            2,
            "exports defined but no exports found in export list. Daemons might not be working",
        )

    # otherwise lets see if our export exists.
    for line in info:
        if item == line[0]:
            return 0, "export is active"

    return 2, "export not found in export list"


check_info["nfsexports"] = {
    "check_function": check_nfsexports,
    "inventory_function": inventory_nfsexports,
    "service_description": "NFS export %s",
}
