Module: check_mk
Branch: master
Commit: 949d50cacfb121d0c427d43a0c2e8afe2755305c
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=949d50cacfb121…
Author: Markus Lengler <ml(a)lengler-it.de>
Date: Tue Jan 24 16:14:43 2012 +0100
new check: check for linux dmraid (bios supported)
Signed-off-by: Florian Heigl <fh(a)mathias-kettner.de>
---
agents/plugins/dmraid | 19 ++++++++++
checkman/dmraid.ldisks | 20 +++++++++++
checkman/dmraid.pdisks | 20 +++++++++++
checks/dmraid | 88 ++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 147 insertions(+), 0 deletions(-)
diff --git a/agents/plugins/dmraid b/agents/plugins/dmraid
new file mode 100755
index 0000000..5bcec9b
--- /dev/null
+++ b/agents/plugins/dmraid
@@ -0,0 +1,19 @@
+#!/bin/sh
+echo '<<<dmraid>>>'
+
+STATUS=$(dmraid -r)
+if [ $? != 0 ]; then
+ exit 1
+fi
+
+# Name und Status ausgeben
+dmraid -s | grep -e ^name -e ^status
+
+# Diskname der Raidplatten ausgeben
+DISKS=$(echo "$STATUS" | cut -f1 -d\:)
+
+for disk in $DISKS ; do
+ device=$(cat /sys/block/$(basename $disk)/device/model )
+ status=$(echo "$STATUS" | grep ^${disk})
+ echo "$status Model: $device"
+done
diff --git a/checkman/dmraid.ldisks b/checkman/dmraid.ldisks
new file mode 100644
index 0000000..3d6fac1
--- /dev/null
+++ b/checkman/dmraid.ldisks
@@ -0,0 +1,20 @@
+title: Check state of logical disks of DMRaid
+agents: linux
+author: Markus Lengler <ml(a)lengler-it.de>
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the state of logical disks (RAID arrays) of a BIOS-controlled software raid,
+ that is managed using the dmraid utility. The types of supported arrays can be listed using {dmraid -l}.
+ The Linux agent detects such array if the {dmraid} command line utility is found in the shell
+ search path.
+
+ The utility {dmraid} is available/installable in all linux distributions.
+
+ The check will return CRITICAL if the raid is inconsitent or WARNING if the array if currently rebuilding. An OK status will be returned as OK.
+
+item:
+ One item is generated per logical disk found on the system.
+
+inventory:
+ All logical disks are automatically inventorized.
diff --git a/checkman/dmraid.pdisks b/checkman/dmraid.pdisks
new file mode 100644
index 0000000..41806f9
--- /dev/null
+++ b/checkman/dmraid.pdisks
@@ -0,0 +1,20 @@
+title: Check state of phyiscal disks of DMRaid
+agents: linux
+author: Markus Lengler <ml(a)lengler-it.de>
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the state of physical disks (RAID arrays) of a BIOS-controlled software raid,
+ that is managed using the dmraid utility. The types of supported arrays can be listed using {dmraid -l}.
+ The Linux agent detects such array if the {dmraid} command line utility is found in the shell
+ search path.
+
+ The utility {dmraid} is available/installable in all linux distributions.
+
+ The check will return CRITICAL if a disk is failed or missing/removed. Otherwise it will return OK.
+
+item:
+ One item is generated per physical disk found in a DM array.
+
+inventory:
+ All logical disks are automatically inventorized.
diff --git a/checks/dmraid b/checks/dmraid
new file mode 100644
index 0000000..dbdafb3
--- /dev/null
+++ b/checks/dmraid
@@ -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.
+
+
+# Author: Markus Lengler <ml(a)lengler-it.de>
+
+
+# Example outputs from agent:
+#
+#<<<dmraid>>>
+#name : isw_ebdabbedfh_system
+#status : ok
+#/dev/sda: isw, "isw_ebdabbedfh", GROUP, ok, 976773166 sectors, data@ 0 Model: WDC WD5002ABYS-5
+#/dev/sdb: isw, "isw_ebdabbedfh", GROUP, ok, 976773166 sectors, data@ 0 Model: WDC WD5002ABYS-5
+
+
+def inventory_dmraid(checkname, info):
+ inventory=[]
+ for line in info:
+ if checkname == "dmraid.ldisks" and line[0] == "name":
+ inventory.append((line[2], None))
+ elif checkname == "dmraid.pdisks" and line[0].startswith("/dev/sd"):
+ item = line[0].split(":")[0]
+ inventory.append((item, None))
+ return inventory
+
+
+def check_dmraid_pdisks(item, _no_params, info):
+ for line in info:
+ if line[0].startswith("/dev/sd"):
+ disk = line[0].split(":")[0]
+ if disk == item:
+ status = line[4].split(",")[0]
+ if status == "ok":
+ pos=line.index("Model:")
+ model=" ".join(line[pos+1:])
+ return (0, "OK - Online (%s)" % model)
+ else:
+ return (2, "CRIT - Error on disk!!")
+ return (2, "CRIT - Missing disk!!")
+
+
+def check_dmraid_ldisks(item, _no_params, info):
+ LDISK_FOUND=False
+ for line in info:
+ if LDISK_FOUND:
+ if line[0] == "status":
+ status = line[2]
+ if status == "ok":
+ return(0, "OK - state is %s" % status)
+ else:
+ return(2, "CRIT - %s" % status)
+ if line[0] == "name" and line[2] == item:
+ LDISK_FOUND=True
+
+ return (3, "UNKNOWN - incomplete data from agent")
+
+
+check_info['dmraid.pdisks'] = \
+ (check_dmraid_pdisks, "RAID PDisk %s", 0, inventory_dmraid)
+
+
+check_info['dmraid.ldisks'] = \
+ (check_dmraid_ldisks, "RAID LDisk %s", 0, inventory_dmraid)
Module: check_mk
Branch: master
Commit: 1ec55e93613b2859c3c2638ebc968a28ec5075b6
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=1ec55e93613b28…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 19:00:08 2012 +0100
Updated bug entries #0411
---
.bugs/411 | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/.bugs/411 b/.bugs/411
index f8663b2..184dc5e 100644
--- a/.bugs/411
+++ b/.bugs/411
@@ -1,10 +1,11 @@
Title: Multisite: i18n and l10n docs missing
Component: docu
+State: done
+Class: todo
Benefit: 1
-State: open
Cost: 2
Date: 2011-10-14 12:21:00
-Class: todo
+Targetversion: future
There are no docs for this feature.
@@ -24,3 +25,6 @@ Available commands are:
3.) Compile the .po file to get a .mo file which can be used by gettext
Locale files are located in: /omd/sites/lancom/local/share/check_mk/locale
+
+2012-01-25 19:00:06: changed state open -> done
+Documentation is done.
Module: check_mk
Branch: master
Commit: 30b022654736678a904a72414a8d491ec3f7a4c0
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=30b02265473667…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 18:59:07 2012 +0100
Updated bug entries #0627
---
.bugs/627 | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/.bugs/627 b/.bugs/627
new file mode 100644
index 0000000..95c8f52
--- /dev/null
+++ b/.bugs/627
@@ -0,0 +1,11 @@
+Title: Use language name from .mo or .po?
+Component: multisite
+State: open
+Date: 2012-01-25 18:58:02
+Targetversion: 1.2.0
+Class: cleanup
+
+The .po files contains meta-Data to the translation.
+There is a file "Language: ". Isn't it possible to extract the
+language alias name from that instead of keeping this in
+a separate non-standard file?
Module: check_mk
Branch: master
Commit: e00a3f03dcf44b1e2bf3961a47e8ed10e84d3f55
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e00a3f03dcf44b…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 18:54:50 2012 +0100
Make help of l10n fit into 80 columns
---
modules/localize.py | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/modules/localize.py b/modules/localize.py
index 6769ee6..43d6014 100755
--- a/modules/localize.py
+++ b/modules/localize.py
@@ -60,20 +60,21 @@ def localize_usage(err = ''):
sys.stdout.write("""Usage: check_mk [-v] --localize COMMAND [ARGS]
Available commands are:
- 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
+ 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:
+ The regular process for translating is:
- 1.) Create/update the .po file for the given language
- 2.) Edit the .po file
- 3.) Compile the .po file to get a .mo file which can be used by gettext
+ 1.) Create/update the .po file for the given language
+ 2.) Edit the .po file
+ 3.) Compile the .po file to get a .mo file which can be used by gettext
- Locale files are located in: %s
+ Locale files are located in: %s
""" % locale_base)
def do_localize(args):
@@ -248,7 +249,6 @@ def localize_update(lang):
sys.stdout.write('Updating .po file for language %s...\n' % lang)
localize_update_po()
-
# Create a .mo file from the given .po file
def localize_compile(lang):
if not lang:
Module: check_mk
Branch: master
Commit: 69488c0589402fcc40bfa35c9aeae0902cb7511b
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=69488c0589402f…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 18:47:31 2012 +0100
Cosmetic code cleanup
---
web/htdocs/lib.py | 6 ++++--
web/htdocs/wato.py | 18 +++++++++---------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/web/htdocs/lib.py b/web/htdocs/lib.py
index cd5f0e9..33f86c4 100644
--- a/web/htdocs/lib.py
+++ b/web/htdocs/lib.py
@@ -140,9 +140,11 @@ def get_languages():
for lang_dir in get_language_dirs():
try:
- languages += [ (val, get_language_alias(val)) for val in os.listdir(lang_dir) if not '.' in val ]
+ languages += [ (val, get_language_alias(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
+ # Catch "OSError: [Errno 2] No such file or
+ # directory:" when directory not exists
pass
return languages
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index a05edf0..f59b94a 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -9116,17 +9116,15 @@ def page_user_profile():
try:
users = load_users()
- #
# Profile edit (user options like language etc.)
- #
if config.may('edit_profile'):
set_lang = html.var('_set_lang')
language = html.var('language')
# Set the users language if requested
if set_lang and language and language != config.get_language():
- # Set custom language
- users[config.user_id]['language'] = language
- config.user['language'] = language
+ # Set custom language
+ users[config.user_id]['language'] = language
+ config.user['language'] = language
else:
# Remove the customized language
@@ -9138,9 +9136,7 @@ def page_user_profile():
# load the new language
load_language(config.get_language())
- #
# Change the password if requested
- #
if config.may('change_password'):
password = html.var('password')
password2 = html.var('password2', '')
@@ -9154,13 +9150,17 @@ def page_user_profile():
success = True
if password:
- html.write("<script type='text/javascript'>if(top) top.location.reload(); else document.location.reload();</script>")
+ html.javascript(
+ "if(top) top.location.reload(); "
+ "else document.location.reload();")
else:
html.reload_sidebar()
except MKUserError, e:
html.add_user_error(e.varname, e.message)
- html.header(_("Edit user profile"), javascripts = ['wato'], stylesheets = ['check_mk', 'pages', 'wato', 'status'])
+ html.header(_("Edit user profile"),
+ javascripts = ['wato'],
+ stylesheets = ['check_mk', 'pages', 'wato', 'status'])
if success:
html.message(_("Successfully updated user profile."))
Module: check_mk
Branch: master
Commit: dfbfc81122a1d2764a5cf07db49d1fe46d9fbc43
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=dfbfc81122a1d2…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 18:47:11 2012 +0100
Updated bug entries #0605, #0606
---
.bugs/605 | 7 +++++--
.bugs/606 | 27 +++++++++++++++++++++++++++
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/.bugs/605 b/.bugs/605
index 7c3483a..c4ce4ab 100644
--- a/.bugs/605
+++ b/.bugs/605
@@ -1,10 +1,13 @@
Title: User is logged out if he changes his language
Component: multisite
-State: open
+Class: nastiness
+State: wontfix
Date: 2012-01-25 18:22:41
Targetversion: 1.2.0
-Class: nastiness
If a user changes his language and does *not* change
is password, he is logged out nevertheless (Cookie based
auth). There should rather happen a page reload only.
+
+2012-01-25 18:47:09: changed state open -> wontfix
+Same as #606
diff --git a/.bugs/606 b/.bugs/606
new file mode 100644
index 0000000..d60e149
--- /dev/null
+++ b/.bugs/606
@@ -0,0 +1,27 @@
+Title: Language selection of user: Default is missing
+Component: multisite
+State: open
+Date: 2012-01-25 18:41:17
+Targetversion: 1.1.13i1
+Class: bug
+
+Wenn man als Benutzer seine Sprache umstellen will, bekommt
+man in der Liste keine Auswahl für Englisch. Es muss so
+funktionieren:
+
+Checkbox nicht angekreuzt -> Sprache, die in multisit.mk
+eingestellt ist. Wenn dort nichts steht dann "English".
+Das bedeutet, dass im Userprofil keine Sprache hinterlegt
+wird. Wenn der Admin die Defaultsprache in multisite.mk
+ändert, dann schlägt das durch.
+
+Checkbox angekreuzt -> Jetzt wird English als Eintrag in der
+Liste sichtbar. Damit kann der User auf Englisch stellen, wenn
+der admin in der multisite.mk "de" eingestellt hat. Im
+Userprofile muss jetzt "None" eingetragen werden. Das ist
+nicht das gleiche, als wie wenn keine Sprache eingestellt
+ist.
+
+Das Verhalten muss dann im user_profile.py und bei der
+Benutzervewaltung genau gleich sein.
+
Module: check_mk
Branch: master
Commit: 50315f44c6b511418ca9d5cb52d778bf8b31e321
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=50315f44c6b511…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 18:23:36 2012 +0100
Updated bug entries #0605
---
.bugs/605 | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/.bugs/605 b/.bugs/605
new file mode 100644
index 0000000..7c3483a
--- /dev/null
+++ b/.bugs/605
@@ -0,0 +1,10 @@
+Title: User is logged out if he changes his language
+Component: multisite
+State: open
+Date: 2012-01-25 18:22:41
+Targetversion: 1.2.0
+Class: nastiness
+
+If a user changes his language and does *not* change
+is password, he is logged out nevertheless (Cookie based
+auth). There should rather happen a page reload only.
Module: check_mk
Branch: master
Commit: 0ed093f16eb28503b9b3fd0c6e9d00c36d665158
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=0ed093f16eb285…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Jan 25 10:03:02 2012 +0100
Updated bug entries #0604
---
.bugs/604 | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/.bugs/604 b/.bugs/604
new file mode 100644
index 0000000..4136895
--- /dev/null
+++ b/.bugs/604
@@ -0,0 +1,10 @@
+Title: User cannot select "unlocalized", i.e. English
+Component: multisite
+State: open
+Date: 2012-01-25 10:02:10
+Targetversion: 1.2.0
+Class: bug
+
+If you create one language "de" then the user cannot
+select the language in his properties (default language is
+also set to "de").