summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRamesh Nachimuthu <rnachimu@redhat.com>2014-05-14 13:29:25 +0530
committerTimothy Asir <tim.gluster@gmail.com>2014-05-27 22:54:51 -0700
commit7de5bb0965f4cc0cf9d0a73c776be2b094180413 (patch)
treedad824fd627da7a72f22ab54228670326ae37944
parent4e7b4ec23793caaae05b1e0e7665e59bf7a607b1 (diff)
server-addons: fix for hostgroup issue in brick status event handler
Macro "$HOSTGROUPNAME$" is used in brick status event handler. But this macro gives only one of the host group to which the host belongs to. But in gluster monitoring, all gluster hosts will have two host groups ('gluster-host' and a host group with cluster name). So using the macro "$HOSTGROUPNAMES$" to pass all the host groups to event handler and internally getting the currect cluster name. Change-Id: I61713ecabff52bcd7f585e9f678426370b9b24d4 Signed-off-by: Ramesh Nachimuthu <rnachimu@redhat.com> Reviewed-on: http://review.gluster.org/7761 Reviewed-by: Nishanth Thomas <nishusemail@gmail.com> Reviewed-by: Kanagaraj M <kmayilsa@redhat.com> Reviewed-by: Timothy Asir <tim.gluster@gmail.com>
-rw-r--r--config/gluster-commands.cfg5
-rw-r--r--config/gluster-templates.cfg2
-rw-r--r--plugins/Makefile.am1
-rwxr-xr-xplugins/brick_status_event_handler.py65
4 files changed, 72 insertions, 1 deletions
diff --git a/config/gluster-commands.cfg b/config/gluster-commands.cfg
index 3110e5b..d2ebdce 100644
--- a/config/gluster-commands.cfg
+++ b/config/gluster-commands.cfg
@@ -106,6 +106,11 @@ define command{
command_line $USER1$/gluster/submit_external_command.py -c '$ARG1$' -H '$ARG2$' -s '$ARG3$' -t '$ARG4$'
}
+define command{
+ command_name brick_status_event_handler
+ command_line $USER1$/gluster/brick_status_event_handler.py -hg '$HOSTGROUPNAMES$' -v $_SERVICEVOL_NAME$ -st $SERVICESTATETYPE$
+}
+
define command {
command_name check_brick_status
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_brick_status -a $_SERVICEVOL_NAME$ $_SERVICEBRICK_DIR$
diff --git a/config/gluster-templates.cfg b/config/gluster-templates.cfg
index 1530f21..b8b47bc 100644
--- a/config/gluster-templates.cfg
+++ b/config/gluster-templates.cfg
@@ -57,7 +57,7 @@ define service {
use gluster-service
register 0
_GLUSTER_ENTITY Brick
- event_handler submit_external_command!'SCHEDULE_SVC_CHECK'!$HOSTGROUPNAME$!'Volume Status - $_SERVICEVOL_NAME$'!'$LONGDATETIME$'
+ event_handler brick_status_event_handler
check_command check_brick_status
}
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 5400d5c..3365ae3 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -12,6 +12,7 @@ dist_glusternagiosplugins_PYTHON = \
config_generator.py \
servicesnmptrapgenerator.py \
submit_external_command.py \
+ brick_status_event_handler.py \
server_utils.py \
$(NULL)
diff --git a/plugins/brick_status_event_handler.py b/plugins/brick_status_event_handler.py
new file mode 100755
index 0000000..cf2b252
--- /dev/null
+++ b/plugins/brick_status_event_handler.py
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+# brick_status_event_handler.py Event handler for Brick status
+# Service. Reschedules the check for volume status service whenever a
+# brick status changes.
+# Copyright (C) 2014 Red Hat Inc
+#
+# This program 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; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+import argparse
+import sys
+import datetime
+
+import submit_external_command
+from glusternagios import utils
+
+
+GLUSTER_HOST_GROUP = "gluster-host"
+
+
+def parse_input():
+ parser = argparse.ArgumentParser(description="Nagios plugin to handle "
+ "brick status events")
+ parser.add_argument('-hg', '--hostgroups', action='store',
+ dest='hostGroups',
+ type=str, required=True, help='Hostgroups')
+ parser.add_argument('-st', '--statetype', action='store',
+ dest='stateType',
+ type=str, required=True, help='Service State Type')
+ parser.add_argument('-v', '--volume', action='store', dest='volume',
+ type=str, required=True, help='Volume Name')
+ args = parser.parse_args()
+ return args
+
+
+def _findClusterName(hostGroupNames):
+ hostGroups = hostGroupNames.split(",")
+ for hostGroup in hostGroups:
+ if hostGroup != GLUSTER_HOST_GROUP:
+ return hostGroup
+
+
+if __name__ == '__main__':
+ args = parse_input()
+ if args.stateType == "SOFT":
+ sys.exit(utils.PluginStatusCode.OK)
+ hostName = _findClusterName(args.hostGroups)
+ now = datetime.datetime.now()
+ command = "SCHEDULE_SVC_CHECK"
+ volumeStatusService = "Volume Status - %s" % args.volume
+ cmdStr = "[%s] %s;%s;%s;%s\n" % (now, command, hostName,
+ volumeStatusService, now)
+ submit_external_command.submitExternalCommand(cmdStr)
+ sys.exit(utils.PluginStatusCode.OK)