Refactoring: Changed all check parameters starting with a 'g' or 'h' to new rulespec...
[check_mk.git] / inventory / mssql_versions
blobb842bcc5f84e8b0975f2def6822c814cf4dd58d0
1 #!/usr/bin/python
2 # -*- encoding: utf-8; py-indent-offset: 4 -*-
3 # +------------------------------------------------------------------+
4 # | ____ _ _ __ __ _ __ |
5 # | / ___| |__ ___ ___| | __ | \/ | |/ / |
6 # | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
7 # | | |___| | | | __/ (__| < | | | | . \ |
8 # | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
9 # | |
10 # | Copyright Mathias Kettner 2013 mk@mathias-kettner.de |
11 # +------------------------------------------------------------------+
13 # This file is part of Check_MK.
14 # The official homepage is at http://mathias-kettner.de/check_mk.
16 # check_mk is free software; you can redistribute it and/or modify it
17 # under the terms of the GNU General Public License as published by
18 # the Free Software Foundation in version 2. check_mk is distributed
19 # in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
20 # out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
21 # PARTICULAR PURPOSE. See the GNU General Public License for more de-
22 # tails. You should have received a copy of the GNU General Public
23 # License along with GNU Make; see the file COPYING. If not, write
24 # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
25 # Boston, MA 02110-1301 USA.
27 # pre 1.4.0i1 output (without edition, space separated)
28 # <<<mssql_versions>>>
29 # MSSQL_SQLEXPRESS 10.50.1600.1
31 # 1.4.0i1 output
32 # <<<mssql_versions:sep(124)>>>
33 # MSSQL_MSSQLSERVER|10.50.1600.1|Enterprise Edition
36 def inv_mssql_versions(info):
37 node = inv_tree_list("software.applications.mssql.instances:")
39 def product(v):
40 parts = map(int, v.split("."))
41 if parts[0] == 12:
42 return "SQL Server 2014"
43 elif parts[0] == 11:
44 return "SQL Server 2012"
45 elif parts[0] == 10:
46 if parts[1] == 50:
47 return "SQL Server 2008 R2"
48 return "SQL Server 2008"
49 elif parts[0] == 9:
50 return "SQL Server 2005"
51 elif parts[0] == 8:
52 return "SQL Server 2000"
53 elif parts[0] == 7:
54 return "SQL Server 7.0"
55 return "Unknown Product"
57 def get_list_item(key, val):
58 for item in node:
59 if item[key] == val:
60 return item
62 node.append({})
63 return node[-1]
65 for line in info:
66 if len(line) not in [2, 4]:
67 continue
69 if "_" in line[0]:
70 instance_id = line[0].split("_", 1)[1]
71 else:
72 instance_id = line[0]
73 version = line[1]
74 edition = line[2] if len(line) == 4 else ''
75 clustered = len(line) == 4 and line[3] != ""
76 cluster_name = line[3] if len(line) == 4 else ''
78 instance = get_list_item("name", instance_id)
79 instance.update({
80 "name": instance_id,
81 "version": version,
82 "product": product(version),
83 "edition": edition,
84 "clustered": clustered,
85 "cluster_name": cluster_name,
89 inv_info["mssql_versions"] = {
90 "inv_function": inv_mssql_versions,