Module: check_mk
Branch: master
Commit: 6febb91ed5f47fe7c166f72d616da070292f38eb
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6febb91ed5f47f…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Tue Jan 10 10:32:00 2012 +0100
Update changelog
---
ChangeLog | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d3aded0..fcbe6a4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,6 +24,7 @@
* if/if64/lnx_if: pad port numbers with zeros in order to sort correctly.
This can be turned off with if_inventory_pad_portnumbers = False.
* Linux agent: wrap freeipmi with lock in order to avoid cache corruption
+ * New check: megaraid_bbu - check existance & status of LSI MegaRaid BBU module
Multisite:
* Improve transaction handling and reload detection: user can have
Module: check_mk
Branch: master
Commit: 6d9ae3d23878811f183b4112366c14b87089a5cd
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6d9ae3d2387881…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Mon Jan 9 18:07:47 2012 +0100
Linux Agent: update URL of MegaCli to better / newer version
Linux Agent: add agent part for new check megaraid_bbu
New Check: megaraid_bbu - Check the status of battery backup unit in midrange / highend LSI based controllers.
Users of very old MegaCli versions might need to update.
---
agents/check_mk_agent.linux | 2 +
checkman/megaraid_bbu | 22 +++++++++
checks/megaraid_bbu | 100 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 124 insertions(+), 0 deletions(-)
diff --git a/agents/check_mk_agent.linux b/agents/check_mk_agent.linux
index 474f374..0745ecc 100755
--- a/agents/check_mk_agent.linux
+++ b/agents/check_mk_agent.linux
@@ -276,6 +276,8 @@ if which MegaCli >/dev/null ; then
MegaCli -PDList -aALL -NoLog < /dev/null | egrep 'Enclosure|Raw Size|Slot Number|Device Id|Firmware state|Inquiry'
echo '<<<megaraid_ldisks>>>'
MegaCli -LDInfo -Lall -aALL -NoLog < /dev/null | egrep 'Size|State|Number|Adapter|Virtual'
+ echo '<<<megaraid_bbu>>>'
+ MegaCli -AdpBbuCmd -GetBbuStatus -aALL -NoLog < /dev/null | grep -v Exit
fi
# 3WARE disk controller (by Radoslaw Bak)
diff --git a/checkman/megaraid_bbu b/checkman/megaraid_bbu
new file mode 100644
index 0000000..e4ea82f
--- /dev/null
+++ b/checkman/megaraid_bbu
@@ -0,0 +1,22 @@
+title: Check state of battery backup unit (BBU) on LSI MegaRAID
+agents: linux
+author: Florian Heigl <fh(a)mathias-kettner.de>
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the existance and status of battery backup units on controllers that are based on the mid- and highend LSI Megaraid chipsets. The entry chipsets do not support BBUs. The Linux agent will try find any existing BBUs - if {MegaCli} is found in your search path.
+ The BBUs might come in various types {(iBBU, BBU)} and also some other vendors are using this RAID chip. It is tested against Intel, Dell, IBM and FSC models.
+
+ The check works by matching the agent output against a dictionary of expected values. If you have MegaCli installed and some values are not detected, it might be neccessary to update your version of MegaCli.
+
+ {MegaCli} can be downloaded from LSI at the following URL {http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.02.16_MegaCLI.zip}
+
+ It would be possible to make the warning / critical levels user specifiable. See the check source for this if you have a need to influence those parameters.
+
+item:
+ A string "RAID Adapter/BBU" followed by the ID of the adapter as reported by MegaCli.
+
+inventory:
+ One item is generated per adapter that has an attached BBU module.
+
+
diff --git a/checks/megaraid_bbu b/checks/megaraid_bbu
new file mode 100644
index 0000000..183352b
--- /dev/null
+++ b/checks/megaraid_bbu
@@ -0,0 +1,100 @@
+#!/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.
+
+
+# Agent output not included since it has almost 100 lines
+# it's available in our archive or fh's bitbucket
+
+# Load a fake controller with known good values for the most
+# important parameters only and try to define their importance
+megaraid_bbu_refvalues = {
+ 'Remaining Capacity Low' : ('No', 1),
+ 'I2c Errors Detected' : ('No', 1),
+ 'Temperature' : ('OK', 2),
+ 'Pack is about to fail & should be replaced': ('No', 1),
+ 'Charging Status' : ('None', 1),
+ 'Battery State' : ('Operational', 2),
+ 'Learn Cycle Status' : ('OK', 1),
+ 'Battery Pack Missing' : ('No', 2),
+ 'Battery Replacement required' : ('No', 1),
+ 'Over Temperature' : ('No', 2),
+ 'Over Charged' : ('No', 1),
+ 'Voltage' : ('OK', 2),
+}
+
+
+def megaraid_bbu_parse(info):
+ controllers = {}
+ for line in info:
+ # Format the Agent output
+ name, data = " ".join(line).split(":")
+ name = name.strip()
+ data = data.strip()
+
+ # Scan each controller into its own dictionary
+ if name == "BBU status for Adapter":
+ current_hba = {}
+ controllers[data] = current_hba
+ else:
+ # We lose the numerical temperature here
+ # (same key is used twice in output of megacli)
+ current_hba[name] = data
+ return controllers
+
+
+def inventory_megaraid_bbu(info):
+ return [ (name, None) for name in megaraid_bbu_parse(info) ]
+
+
+def check_megaraid_bbu(item, _no_params, info):
+ controllers = megaraid_bbu_parse(info)
+ if item not in controllers:
+ return (3, "UNKNOWN - Controller data not found in agent output")
+
+ controller = controllers[item]
+ broken = []
+ state = 0
+ # get current charge level
+ charge = (", Charge is %s" % controller['Relative State of Charge'])
+
+ # verify defined important parameters to current level
+ for varname, (refvalue, refstate) in megaraid_bbu_refvalues.items():
+ value = controller[varname]
+ # build a list of all errors
+ if controller[varname] != refvalue:
+ broken.append("%s is %s, but should be %s(%s)" % (varname, value, refvalue, "!" * refstate))
+ state = max(state, refstate)
+
+ # return assembled info
+ if broken:
+ return (state, nagios_state_names[state] + " - " + ", ".join(broken) + charge)
+ else:
+ return (0, "OK - all states as expected" + charge)
+
+ return (3, "UNKNOWN - Check not implemented")
+
+
+check_info["megaraid_bbu"] = (check_megaraid_bbu, "RAID Adapter/BBU %s", 0, inventory_megaraid_bbu)
Module: check_mk
Branch: master
Commit: 732694461b1daf67709680c6645fb9a838daaf2b
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=732694461b1daf…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Tue Jan 10 10:29:47 2012 +0100
WATO: rewrite informational text
---
web/htdocs/wato.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 7722484..ce1a73e 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -6647,8 +6647,8 @@ def mode_edit_user(phase):
# Locking
html.write("<tr><td class=legend>")
- html.write(_("<i>Disabling the password prevents a user from logging in without "
- "the need of changing the password. Notifications are not affected "
+ html.write(_("<i>Disabling the password will prevent a user from logging in while "
+ "retaining the original password. Notifications are not affected "
"by this setting.</i>"))
html.write("</td><td class=content>")
html.checkbox("locked", user.get("locked", False))
Module: check_mk
Branch: master
Commit: 22e96966efc6cd18b0d2a7dbf2a51290642f6415
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=22e96966efc6cd…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Tue Jan 10 10:27:51 2012 +0100
Check Manpages megaraid_ldisks megaraid_pdisks
---
checkman/megaraid_ldisks | 2 +-
checkman/megaraid_pdisks | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/checkman/megaraid_ldisks b/checkman/megaraid_ldisks
index 41fe06d..4d45bf5 100644
--- a/checkman/megaraid_ldisks
+++ b/checkman/megaraid_ldisks
@@ -10,7 +10,7 @@ description:
search path. The usual way is to install it into {/usr/local/bin}.
The utility {MegaCli} can be downloaded from
- {http://www.lsi.com/DistributionSystem/AssetDocument/support/downloads/megaraid/miscellaneous/linux/2.00.15_Linux_MegaCLI.zip}.
+ {http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.02.16_MegaCLI.zip}.
This is an alternative to the utility {cfggen}. {cfggen} only works
with the driver {mptsas}, whereas {MegaCli} uses a device created
by the driver {megaraid_sas}.
diff --git a/checkman/megaraid_pdisks b/checkman/megaraid_pdisks
index 9e59793..34a50ef 100644
--- a/checkman/megaraid_pdisks
+++ b/checkman/megaraid_pdisks
@@ -10,7 +10,7 @@ description:
search path. The usual way is to install it into {/usr/local/bin}.
The utility {MegaCli} can be downloaded from
- {http://www.lsi.com/DistributionSystem/AssetDocument/support/downloads/megaraid/miscellaneous/linux/2.00.15_Linux_MegaCLI.zip}.
+ {http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.02.16_MegaCLI.zip}.
This is an alternative to the utility {cfggen}. {cfggen} only works
with the driver {mptsas}, whereas {MegaCli} uses a device created
by the driver {megaraid_sas}.
Module: check_mk
Branch: master
Commit: 500f87d0b16b8fffb5127b6939a649dcccffbe66
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=500f87d0b16b8f…
Author: Florian Heigl <fh(a)mathias-kettner.de>
Date: Tue Jan 10 10:30:25 2012 +0100
Add two gb entries
---
.bugs/574 | 10 ++++++++++
.bugs/575 | 10 ++++++++++
2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/.bugs/574 b/.bugs/574
new file mode 100644
index 0000000..8485fed
--- /dev/null
+++ b/.bugs/574
@@ -0,0 +1,10 @@
+Title: Usability: Focus handling in User & Contacts: Edit User
+Component: wato
+State: open
+Date: 2012-01-09 15:32:35
+Targetversion: 1.2.0
+Class: feature
+
+If you call the edit dialog it will put the focus on the user name field and highlight the whole text.
+This is great when initially adding the user but causes unwanted overwriting of the user name when you're just updating it.
+If called in edit mode, don't set focus.
diff --git a/.bugs/575 b/.bugs/575
new file mode 100644
index 0000000..4539889
--- /dev/null
+++ b/.bugs/575
@@ -0,0 +1,10 @@
+Title: Undo changes from the commit queue
+Component: wato
+State: open
+Date: 2012-01-09 15:38:00
+Targetversion: 1.2.0
+Class: nastiness
+
+This will be an unloved request...
+We will need an option to undo a change that has been "clicked" but is still waiting for activation.
+In a larger setup there could be 20 pending changes because the admin(s) will try to match nagios downtimes for activation or some other se. on the other hand right now you need to COMMIT a change into the live configuration to UNDO it - even if you already noticed it was erronoeous. (Ja, ich kann heute nicht tippen)
Module: check_mk
Branch: master
Commit: 5b464387546eb8f5aba8f1aad27a2ef575381928
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5b464387546eb8…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Jan 10 10:30:30 2012 +0100
FIX: Fixed auth problem when following logwatch icon links while using the form based auth
---
ChangeLog | 2 ++
web/plugins/icons/builtin.py | 2 +-
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 72d59f6..d3aded0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -34,6 +34,8 @@
* Added filter for log state (UP,DOWN,OK,CRIT...) to all log views
* New painter for normal and retry check interval (added to detail views)
* Site filter shows "(local)" in case of non multi-site setup
+ * FIX: Fixed auth problem when following logwatch icon links while using
+ the form based auth
WATO:
* Removed IP-Address attribute from folders
diff --git a/web/plugins/icons/builtin.py b/web/plugins/icons/builtin.py
index 3f1899f..3f09af7 100644
--- a/web/plugins/icons/builtin.py
+++ b/web/plugins/icons/builtin.py
@@ -197,7 +197,7 @@ multisite_icons.append({
# +----------------------------------------------------------------------+
def logwatch_url(sitename, notes_url):
- i = notes_url.index("/check_mk/logwatch.py")
+ i = notes_url.index("check_mk/logwatch.py")
site = html.site_status[sitename]["site"]
return site["url_prefix"] + notes_url[i:]
Module: check_mk
Branch: master
Commit: 2c6db1ec483a34e274e6a3b161080e8093b2e1e0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2c6db1ec483a34…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Jan 10 10:06:03 2012 +0100
cmk --localize update supports an optional ALIAS which is used as
display string in the multisite GUI
---
ChangeLog | 2 ++
modules/localize.py | 37 +++++++++++++++++++++++++++----------
web/htdocs/lib.py | 11 ++++++++++-
3 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 81df73b..72d59f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,8 @@
* cmk -O/-R now uses omd re{start,load} core if using OMD
* FIX: setup.sh now setups up permissions for conf.d/wato
correctly
+ * cmk --localize update supports an optional ALIAS which is used as
+ display string in the multisite GUI
Checks & Agents:
* Windows agent: output eventlog texts in UTF-8 encoding. This
diff --git a/modules/localize.py b/modules/localize.py
index f409fcc..85e1650 100755
--- a/modules/localize.py
+++ b/modules/localize.py
@@ -39,9 +39,10 @@ def verbose_system(command):
domain = 'multisite'
-pot_file = None
-po_file = None
-mo_file = None
+pot_file = None
+po_file = None
+mo_file = None
+alias_file = None
if local_locale_dir:
locale_base = local_locale_dir
@@ -61,10 +62,12 @@ def localize_usage(err = ''):
BE AWARE: This is an experimental feature!!!
Available commands are:
- update LANG ... Creates or updates a .po file for the given language.
- compile LANG ... Compiles the .po file into a .mo file which can
- be used by gettext.
- edit LANG ... Call update, open .po in editor and compile in one step
+ update LANG (ALIAS) ... Creates or updates a .po file for the given language.
+ The alias is an optional attribute which will be used as
+ display string in the Multisite GUI.
+ compile LANG ... Compiles the .po file into a .mo file which can
+ be used by gettext.
+ edit LANG ... Call update, open .po in editor and compile in one step
The regular process for translating is:
@@ -86,6 +89,10 @@ def do_localize(args):
else:
lang = None
+ alias = None
+ if len(args) > 2:
+ alias = args[2]
+
commands = {
"update" : localize_update,
"compile" : localize_compile,
@@ -97,6 +104,7 @@ def do_localize(args):
try:
f(lang)
+ write_alias(alias)
except LocalizeException, e:
sys.stderr.write("%s\n" % e)
sys.exit(1)
@@ -108,6 +116,14 @@ def do_localize(args):
(", ".join(allc[:-1]), allc[-1]))
sys.exit(1)
+def write_alias(alias):
+ if not alias:
+ return
+
+ if alias == '-':
+ os.remove(alias_file)
+ else:
+ file(alias_file, 'w').write(alias)
def check_binaries():
# Are the xgettext utils available?
@@ -121,9 +137,10 @@ def get_languages():
def init_files(lang):
- global po_file, mo_file
- po_file = locale_base + '/%s/LC_MESSAGES/%s.po' % (lang, domain)
- mo_file = locale_base + '/%s/LC_MESSAGES/%s.mo' % (lang, domain)
+ global po_file, mo_file, alias_file
+ po_file = locale_base + '/%s/LC_MESSAGES/%s.po' % (lang, domain)
+ mo_file = locale_base + '/%s/LC_MESSAGES/%s.mo' % (lang, domain)
+ alias_file = locale_base + '/%s/alias' % (lang)
def localize_update_po():
diff --git a/web/htdocs/lib.py b/web/htdocs/lib.py
index e2cffda..2d3ab6f 100644
--- a/web/htdocs/lib.py
+++ b/web/htdocs/lib.py
@@ -126,9 +126,18 @@ def get_languages():
if defaults.omd_root:
dirs.append(defaults.omd_root + "/local/share/check_mk/locale")
+ def get_language_alias(dirs, lang):
+ alias = lang
+ for lang_dir in dirs:
+ try:
+ alias = file('%s/%s/alias' % (lang_dir, lang), 'r').read().strip()
+ except (OSError, IOError):
+ pass
+ return alias
+
for lang_dir in dirs:
try:
- languages += [ (val, val) for val in os.listdir(lang_dir) if not '.' in val ]
+ languages += [ (val, get_language_alias(dirs, val)) for val in os.listdir(lang_dir) if not '.' in val ]
except OSError:
# Catch "OSError: [Errno 2] No such file or directory:" when directory not exists
pass