summaryrefslogtreecommitdiffstats
path: root/plugins/check_gluster_proc_status.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/check_gluster_proc_status.py')
-rwxr-xr-xplugins/check_gluster_proc_status.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/plugins/check_gluster_proc_status.py b/plugins/check_gluster_proc_status.py
new file mode 100755
index 0000000..bc15672
--- /dev/null
+++ b/plugins/check_gluster_proc_status.py
@@ -0,0 +1,90 @@
+#!/usr/bin/python
+# 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 check_proc_util
+from glusternagios import utils
+from glusternagios import glustercli
+
+
+_NFS = "NFS"
+_SMB = "CIFS"
+_CTDB = "CTDB"
+_SHD = "SHD"
+_QUOTA = "QUOTA"
+_BRICK = "BRICK"
+_GLUSTERD = "GLUSTERD"
+
+
+def parse_input():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-t", "--type", action="store", dest="type",
+ required=True,
+ help="Type of status to be shown. Possible values:",
+ choices=[_NFS, _SMB, _CTDB, _SHD, _QUOTA, _BRICK,
+ _GLUSTERD])
+ parser.add_argument("-v", "--volume", action="store", required=False,
+ help="Name of the volume for status")
+ parser.add_argument("-b", "--brickPath", action="store", required=False,
+ help="Brick Path")
+ args = parser.parse_args()
+ return args
+
+
+def _findBrickName(volInfo, brickPath):
+ hostUuid = glustercli.hostUUIDGet()
+ for volumeName, volumeInfo in volInfo.iteritems():
+ for brick in volumeInfo['bricksInfo']:
+ if brick.get('hostUuid') == hostUuid \
+ and brick['name'].split(':')[1] == brickPath:
+ return brick['name']
+
+
+if __name__ == '__main__':
+ args = parse_input()
+ status, msg = check_proc_util.getGlusterdStatus()
+ if status == utils.PluginStatusCode.OK:
+ if args.type == _NFS:
+ status, msg = check_proc_util.getNfsStatus(glustercli.volumeInfo())
+ elif args.type == _SMB:
+ status, msg = check_proc_util.getSmbStatus(glustercli.volumeInfo())
+ elif args.type == _SHD:
+ status, msg = check_proc_util.getShdStatus(glustercli.volumeInfo())
+ elif args.type == _QUOTA:
+ status, msg = check_proc_util.getQuotadStatus(
+ glustercli.volumeInfo())
+ elif args.type == _CTDB:
+ volInfo = glustercli.volumeInfo()
+ nfsStatus, nfsMsg = check_proc_util.getNfsStatus(volInfo)
+ smbStatus, smbMsg = check_proc_util.getSmbStatus(volInfo)
+ status, msg = check_proc_util.getCtdbStatus(smbStatus, nfsStatus)
+ elif args.type == _BRICK:
+ volInfo = glustercli.volumeInfo(args.volume)
+ brickName = _findBrickName(volInfo, args.brickPath)
+ if brickName:
+ status, msg = check_proc_util.getBrickStatus(args.volume,
+ brickName)
+ else:
+ status = utils.PluginStatusCode.CRITICAL
+ msg = "Brick - %s not found" % args.brickPath
+ elif args.type != _GLUSTERD:
+ msg = "UNKNOWN: Could not determine %s status " % args.type
+ status = utils.PluginStatusCode.UNKNOWN
+ print msg
+ exit(status)