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

# {} -> Default was 'This host'
# server: None -> 'This host'
# server: "default DNS server" -> will omit the option "-s" for check_dns
# server: "str"


def check_dns_arguments(params):
    description, settings = params
    args = ["-H", description]

    dns_server = settings.get("server")
    if dns_server is None:
        args += ["-s", "$HOSTADDRESS$"]
    elif dns_server != "default DNS server":
        args += ["-s", settings["server"]]

    if settings.get("expect_all_addresses", True):
        args.append("-L")

    for address in settings.get("expected_addresses_list", ()):
        args += ["-a", address]

    if settings.get("expected_authority"):
        args.append("-A")

    if "response_time" in settings:
        warn, crit = settings["response_time"]
        args += ["-w", "%f" % float(warn)]
        args += ["-c", "%f" % float(crit)]

    if "timeout" in settings:
        args += ["-t", settings["timeout"]]

    return args


def check_dns_desc(params):
    if "name" in params[1]:
        return params[1]["name"]
    return "DNS %s" % params[0]


active_check_info["dns"] = {
    "command_line": "check_dns $ARG1$",
    "argument_function": check_dns_arguments,
    "service_description": check_dns_desc,
    "has_perfdata": True,
}
