Module: check_mk
Branch: master
Commit: 3584c594cac74802badb472d6db20094c5ba5892
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3584c594cac748…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon Sep 10 15:48:59 2012 +0200
FIX: Remove also user settings and event console rule on factory reset
---
ChangeLog | 1 +
web/htdocs/wato.py | 10 ++++++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 40b9e07..9dff937 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -74,6 +74,7 @@
* FIX: Removed double collect_hosts() call in activate changes hook
* FIX: Fixed double hook execution when using localized multisite
* FIX: User list shows names of contactgroups when no alias given
+ * FIX: Remove also user settings and event console rule on factory reset
BI:
* Great speed up of rule compilation in large environments
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index e078419..8d3cbc2 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -5135,14 +5135,20 @@ def factory_reset():
for id in users.keys():
if id != config.user_id:
del users[id]
- save_users(users) # this will cleanup htpasswd
- for path in [ root_dir, multisite_dir, sites_mk, log_dir ]:
+ to_delete = [ path for c,n,path
+ in backup_paths
+ if n != "auth.secret" ] + [ log_dir ]
+ for path in to_delete:
if os.path.isdir(path):
shutil.rmtree(path)
elif os.path.exists(path):
os.remove(path)
+ make_nagios_directory(multisite_dir)
+ make_nagios_directory(root_dir)
+
+ save_users(users) # make sure, omdadmin is present after this
log_pending(SYNCRESTART, None, "factory-reset", _("Complete reset to factory settings."))
Module: check_mk
Branch: master
Commit: e20adce58fd4936ef1e68c82bb5da90b2486afdf
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e20adce58fd493…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Fri Sep 7 15:14:22 2012 +0200
zypper: new check and plugin mk_zypper for checking zypper updates.
---
ChangeLog | 1 +
agents/plugins/mk_zypper | 40 +++++++++++++++++++++
checkman/zypper | 17 +++++++++
checks/zypper | 88 ++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 146 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4d4d2e3..fa90330 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -49,6 +49,7 @@
* Added Agent for OpenBSD
* Added Checks for UPS devices
* cisco_hsrp: New Check for monitoring HSRP groups on Cisco Routers. (SMIv2 version)
+ * zypper: new check and plugin mk_zypper for checking zypper updates.
WATO:
* Added permission to control the "clone host" feature in WATO
diff --git a/agents/plugins/mk_zypper b/agents/plugins/mk_zypper
new file mode 100755
index 0000000..64f7bb9
--- /dev/null
+++ b/agents/plugins/mk_zypper
@@ -0,0 +1,40 @@
+#!/bin/bash
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+if type zypper > /dev/null ; then
+ echo '<<<zypper:sep(124)>>>'
+ if grep -q '^VERSION = 10' < /etc/SuSE-release
+ then
+ ZYPPER='waitmax 10 zypper --no-gpg-checks --non-interactive --terse'
+ $ZYPPER refresh > /dev/null
+ { $ZYPPER pchk || [ $? = 100 -o $? = 101 ] && $ZYPPER lu ; } \
+ | egrep '(patches needed|\|)' | egrep -v '^(#|Repository |Catalog )'
+ else
+ ZYPPER='waitmax 10 zypper --no-gpg-checks --non-interactive --quiet'
+ $ZYPPER refresh > /dev/null
+ { { $ZYPPER pchk || [ $? = 100 -o $? = 101 ] && $ZYPPER lp ; } ; $ZYPPER ll ; } \
+ | egrep '(patches needed|\|)' | egrep -v '^(#|Repository)'
+ fi
+fi
diff --git a/checkman/zypper b/checkman/zypper
new file mode 100644
index 0000000..1044306
--- /dev/null
+++ b/checkman/zypper
@@ -0,0 +1,17 @@
+title: Check for (security) updates via Zypper
+agents: linux
+author: Mathias Kettner <mk(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check checks for available updates via {zypper} and SLES
+ and OPENSUSE distributions. You need to install the plugin {mk_zypper}
+ into the {plugins} directory of your agent.
+
+ The check gets critical if there are security updates available.
+ It gets warning, if there are other updates available or if package
+ locks exist (created by {zypper addlock}).
+
+inventory:
+ One service will be created for each system where the {mk_zypper}
+ plugin produces a non-empty output.
diff --git a/checks/zypper b/checks/zypper
new file mode 100644
index 0000000..49a6a4c
--- /dev/null
+++ b/checks/zypper
@@ -0,0 +1,88 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2012 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+# <<<zypper:sep(124)>>>
+# 5 patches needed (2 security patches)
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-326 | 1 | recommended | needed | Softwarestack update
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-316 | 1 | security | needed | bind: Fixed a remote denial of service
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-318 | 1 | recommended | needed | mdadm: fixed some race conditions during startup
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-320 | 1 | security | needed | update for libxml2
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-321 | 1 | recommended | needed | sudo: fixed pam session leak and tls option handling
+# Updates for openSUSE 12.1 12.1-1.4 | openSUSE-2012-324 | 1 | recommended | needed | util-linux: make mount honor 'noexec' and 'user' option
+# 1 | apache | package | (any)
+# 2 | mysql | package | (any)
+
+
+def inventory_zypper(info):
+ if len(info) > 0:
+ return [(None,{})]
+
+def check_zypper(_no_item, _no_params, info):
+ patch_types = {}
+ updates = 0
+ locks = []
+ for line in info:
+ # 5 patches needed (2 security patches)
+ if len(line) >= 6 and line[4].strip() == 'needed':
+ patch_type = line[3].strip()
+ patch_types.setdefault(patch_type, 0)
+ patch_types[patch_type] += 1
+ updates += 1
+ elif len(line) == 4:
+ locks.append(line[1])
+
+ if patch_types.get('security'):
+ state = 2
+ elif updates:
+ state = 1
+ else:
+ state = 0
+
+ infotext = nagios_state_names[state] + " - %d updates" % updates
+ if updates:
+ patch_items = patch_types.items()
+ patch_items.sort()
+ infos = []
+ for t,c in patch_items:
+ infos.append("%s: %d(%s)" % (t, c, t == "security" and '!!' or '!'))
+ infotext += " (" + ", ".join(infos) + ")"
+
+ if locks:
+ state = max(1, state)
+ infotext += ", %d locks(!)" % len(locks)
+
+ return state, infotext
+
+
+
+ return 3, "Hirni"
+
+check_info['zypper'] = {
+ "check_function" : check_zypper,
+ "inventory_function" : inventory_zypper,
+ "service_description" : "Zypper Updates",
+}
+
Module: check_mk
Branch: master
Commit: db80fb204bcaed7f9abf00ed0978c141af494164
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=db80fb204bcaed…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Sep 6 16:55:01 2012 +0200
User managament: Added fields for editing host/service notification commands
---
ChangeLog | 1 +
web/htdocs/wato.py | 11 +++++++++++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 724a7c4..a074bc6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -69,6 +69,7 @@
* new: search for rules in "Host & Service Configuration"
* parent scan: new option "ping probes", that allows skipping
unreachable gateways.
+ * User managament: Added fields for editing host/service notification commands
* FIX: Removed double collect_hosts() call in activate changes hook
* FIX: Fixed double hook execution when using localized multisite
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 0eb9438..ff95d1d 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -7701,6 +7701,8 @@ def mode_edit_user(phase):
for what, opts in [ ( "host", "durfs"), ("service", "wucrfs") ]:
new_user[what + "_notification_options"] = "".join(
[ opt for opt in opts if html.get_checkbox(what + "_" + opt) ])
+ # FIXME: Validate notification commands. Do they really exist?
+ new_user[what + "_notification_commands"] = html.var(what + "_notification_commands")
# Custom attributes
for name, vs in user_attributes:
@@ -7875,6 +7877,15 @@ def mode_edit_user(phase):
"will be notified to this contact. Note: these settings will only be saved "
"and used if the user is member of a contact group."))
+ # Notification commands
+ # FIXME: Add dropdown. But where to get a list of notification commands?
+ forms.section(_("Notification Command for Hosts"))
+ html.text_input("host_notification_commands", user.get("host_notification_commands", "check-mk-notify"))
+ html.help(_("Use this Nagios command for sending host notifications."))
+ forms.section(_("Notification Command for Services"))
+ html.text_input("service_notification_commands", user.get("service_notification_commands", "check-mk-notify"))
+ html.help(_("Use this Nagios command for sending service notifications."))
+
forms.header(_("Personal Settings"), isopen = False)
select_language(user.get('language', ''))
for name, vs in user_attributes:
Module: check_mk
Branch: master
Commit: 6e23fcba7e5f7efd8b92b36e5bcaf14a258fe82e
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6e23fcba7e5f7e…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Sep 6 17:07:05 2012 +0200
Sidebar: Sorting aggregation groups in BI snapin now
---
ChangeLog | 2 ++
web/plugins/sidebar/bi.py | 9 +++++----
web/plugins/sidebar/shipped.py | 2 +-
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a074bc6..913c60d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -79,6 +79,8 @@
Multisite:
* Added css class="dashboard_<name>" to the dashboard div for easier
customization of the dashboard style of a special dashboard
+ * Sidebar: Sorting aggregation groups in BI snapin now
+ * Sidebar: Sorting sites in master control snapin case insensitive
* FIX: fixed localization of general permissions
* FIX: show multisite warning messages even after page reload
* FIX: fix bug in Age ValueSpec: days had been ignored
diff --git a/web/plugins/sidebar/bi.py b/web/plugins/sidebar/bi.py
index f044c5f..fe34c6b 100644
--- a/web/plugins/sidebar/bi.py
+++ b/web/plugins/sidebar/bi.py
@@ -36,10 +36,11 @@ except NameError:
def render_bi_groups():
bi.compile_forest(config.user_id)
html.write("<ul>")
- for group, trees in bi.g_user_cache["forest"].items():
- if len(trees) > 0:
- bulletlink(group, "view.py?view_name=aggr_group&aggr_group=%s" %
- htmllib.urlencode(group))
+ group_names = [ group for group, trees in bi.g_user_cache["forest"].items() if trees ]
+ group_names = sorted(group_names, cmp = lambda a,b: cmp(a.lower(), b.lower()))
+ for group in group_names:
+ bulletlink(group, "view.py?view_name=aggr_group&aggr_group=%s" %
+ htmllib.urlencode(group))
html.write("</ul>")
sidebar_snapins["biaggr_groups"] = {
diff --git a/web/plugins/sidebar/shipped.py b/web/plugins/sidebar/shipped.py
index de9d1a4..339aab2 100644
--- a/web/plugins/sidebar/shipped.py
+++ b/web/plugins/sidebar/shipped.py
@@ -381,7 +381,7 @@ def render_sitestatus():
sitenames = []
for sitename, site in config.allsites().iteritems():
sitenames.append((sitename, site['alias']))
- sitenames = sorted(sitenames, key=lambda k: k[1])
+ sitenames = sorted(sitenames, key=lambda k: k[1], cmp = lambda a,b: cmp(a.lower(), b.lower()))
for sitename, sitealias in sitenames:
site = config.site(sitename)