summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/gluster-commands.cfg5
-rw-r--r--config/gluster-templates.cfg1
-rw-r--r--plugins/Makefile.am1
-rw-r--r--plugins/config_generator.py2
-rwxr-xr-xplugins/submit_external_command.py55
5 files changed, 63 insertions, 1 deletions
diff --git a/config/gluster-commands.cfg b/config/gluster-commands.cfg
index f1b94a4..60d6757 100644
--- a/config/gluster-commands.cfg
+++ b/config/gluster-commands.cfg
@@ -95,3 +95,8 @@ define command{
command_name check_cluster_status
command_line $USER1$/gluster/check_cluster_status.py $HOSTNAME$
}
+
+define command{
+ command_name submit_external_command
+ command_line $USER1$/gluster/submit_external_command.py -c '$ARG1$' -H '$ARG2$' -s '$ARG3$' -t '$ARG4$'
+}
diff --git a/config/gluster-templates.cfg b/config/gluster-templates.cfg
index d9bebf9..8af2931 100644
--- a/config/gluster-templates.cfg
+++ b/config/gluster-templates.cfg
@@ -58,6 +58,7 @@ define service {
use gluster-passive-service
register 0
_GLUSTER_ENTITY Brick
+ event_handler submit_external_command!'SCHEDULE_SVC_CHECK'!$HOSTGROUPNAME$!'Volume Status - $_SERVICEVOL_NAME$'!'$LONGDATETIME$'
}
define service {
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 39893e3..a6cc905 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -11,6 +11,7 @@ dist_glusternagiosplugins_PYTHON = \
discovery.py \
config_generator.py \
servicesnmptrapgenerator.py \
+ submit_external_command.py \
$(NULL)
EXTRA_DIST = \
diff --git a/plugins/config_generator.py b/plugins/config_generator.py
index 17b5df3..bf18cf1 100644
--- a/plugins/config_generator.py
+++ b/plugins/config_generator.py
@@ -141,7 +141,7 @@ class GlusterNagiosConfManager:
def __createBrickStatusService(self, brick, hostName):
brickService = {}
- brickService['use'] = 'gluster-passive-service'
+ brickService['use'] = 'gluster-brick-passive-service'
brickService['host_name'] = hostName
serviceDesc = "Brick Status - %s:%s" % (hostName, brick['brickpath'])
brickService['service_description'] = serviceDesc
diff --git a/plugins/submit_external_command.py b/plugins/submit_external_command.py
new file mode 100755
index 0000000..876c6b5
--- /dev/null
+++ b/plugins/submit_external_command.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# submit_external_command.py Nagios plugin to submit external command
+# to nagios
+# 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
+
+from glusternagios import utils
+from constants import NAGIOS_COMMAND_FILE_PATH
+
+
+def parse_input():
+ parser = argparse.ArgumentParser(description="Nagios external "
+ "command submission tool")
+ parser.add_argument('-c', '--command', action='store', dest='command',
+ type=str, required=True, help='External Command')
+ parser.add_argument('-H', '--hostName', action='store', dest='hostName',
+ type=str, required=True, help='Host Name')
+ parser.add_argument('-s', '--service', action='store', dest='service',
+ type=str, required=False,
+ help='Service Description')
+ parser.add_argument('-t', '--time', action='store', dest='dateTime',
+ type=str, required=True,
+ help='Service Description')
+ args = parser.parse_args()
+ return args
+
+
+def _submitExternalCommand(command, hostname, service, dateTime):
+ cmdStr = "[%s] %s;%s;%s;%s\n" % (dateTime, command,
+ hostname, service, dateTime)
+ with open(NAGIOS_COMMAND_FILE_PATH, "w") as f:
+ f.write(cmdStr)
+
+
+if __name__ == '__main__':
+ args = parse_input()
+ _submitExternalCommand(args.command, args.hostName,
+ args.service, args.dateTime)
+ sys.exit(utils.PluginStatusCode.OK)