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

# pre 1.4.0i1 output (without edition, space separated)
# <<<mssql_versions>>>
# MSSQL_SQLEXPRESS  10.50.1600.1

# 1.4.0i1 output
# <<<mssql_versions:sep(124)>>>
# MSSQL_MSSQLSERVER|10.50.1600.1|Enterprise Edition|ZMUCSQLCTX

# TODO: This is a legacy check. It has been replaced by the mssql_instance
# check in version 1.4.0i1. The check here is kept for compatibility with
# older agents that output the mssql_versions section.


def inventory_mssql_versions(info):
    inventory = []
    for line in info:
        if len(line) in [2, 4] and line[0] != "Error:":
            inventory.append((line[0], None))
    return inventory


def check_mssql_versions(item, _unused, info):
    for line in info:
        if line[0] == item:
            if len(line) >= 2:
                yield 0, "Server is running version %s" % line[1]

            if len(line) == 4:
                yield 0, line[2]  # edition

                if line[3] != "":
                    yield 0, "clustered as %s" % line[3]

            yield 1, "This check is deprecated. Please update the agent plugin on the monitored system and rediscover the services of this host"

            return

    yield 1, "This check is deprecated. Please update the agent plugin on the monitored system and rediscover the services of this host"


check_info["mssql_versions"] = {
    "check_function": check_mssql_versions,
    "inventory_function": inventory_mssql_versions,
    "service_description": "MSSQL %s Version",
}
