summaryrefslogtreecommitdiffstats
path: root/plugins/discover_volumes.py
diff options
context:
space:
mode:
authorRamesh Nachimuthu <rnachimu@redhat.com>2014-05-01 12:37:54 +0530
committerSahina Bose <sabose@redhat.com>2014-05-02 02:23:55 -0700
commitd0327fab7fbaf2c6f30e807fb8c90dfe5fa9db5c (patch)
treefb9d155b0a7221e3ce26bce92f825d1cb255033b /plugins/discover_volumes.py
parente222d3e0c4209d59f079d15484138bea9d859378 (diff)
autoconf: discover volume list and info separately
NRPE doesn't support transfering large junk of data as a result. Hence we have to discover the volume details one by one. Added two NRPE commands 'discover_volume_list' and 'discover_volume_info'. 'discover_volume_list' returns the list of volume names with volume type. 'discover_volume_info' returns the bricks details of a given volume. Change-Id: I753be5e407fe14988f23ca77007b3a585537b360 Signed-off-by: Ramesh Nachimuthu <rnachimu@redhat.com> Reviewed-on: http://review.gluster.org/7630 Reviewed-by: Kanagaraj M <kmayilsa@redhat.com> Reviewed-by: Sahina Bose <sabose@redhat.com>
Diffstat (limited to 'plugins/discover_volumes.py')
-rwxr-xr-xplugins/discover_volumes.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/plugins/discover_volumes.py b/plugins/discover_volumes.py
new file mode 100755
index 0000000..f917d40
--- /dev/null
+++ b/plugins/discover_volumes.py
@@ -0,0 +1,83 @@
+#!/usr/bin/python
+# discover_volumes.py -- nagios plugin for discovering
+#logical gluster components
+# 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 json
+import sys
+import argparse
+
+from glusternagios import utils
+from glusternagios import glustercli
+
+
+def discoverVolumes(volumeName, list):
+ """
+ This method helps to discover volumes list and volume info
+ Parameters
+ ----------
+ list: Flag used for getting volume info. If the flag is 'True' then the
+ method will return only list of volume names with volume Type and doesn't
+ include the brick details. . If list is 'False' then returns the volume
+ details with brick information.
+
+ volumeName: Fetch information only for the given volume.
+ Note: glustercli.volumeInfo(volName) command accept a volumeName. But if
+ the volume name is not passed then it returns details about all the volumes
+ in the cluster.
+ Returns
+ ---------
+ Returns volume details in the following dictionary format
+ {
+ 'vol-name' : {vol-details}
+ 'vol-name' : {vol-details}
+ 'vol-name' : {vol-details}
+ ...
+ }
+ """
+ resultlist = {}
+ volumes = glustercli.volumeInfo(volumeName)
+ for key, volume in volumes.iteritems():
+ volDict = {}
+ volDict['name'] = key
+ volDict['type'] = volume['volumeType']
+ if not list:
+ volDict['bricks'] = []
+ for brick in volume['bricksInfo']:
+ brickproplist = brick['name'].split(':')
+ volDict['bricks'].append({'brickpath': brickproplist[1],
+ 'hostUuid': brick['hostUuid']})
+ resultlist[key] = volDict
+ resultString = json.dumps(resultlist)
+ return resultString
+
+
+def get_arg_parser():
+ parser = argparse.ArgumentParser(description="Discovery tool for "
+ "Gluster volumes")
+ parser.add_argument('-l', '--list', action='store_true', dest='list',
+ help="Fetch only list of volumes names")
+ parser.add_argument('-v', '--volume', action='store', dest='volume',
+ type=str, help='Volume name')
+ return parser
+
+
+if __name__ == '__main__':
+ args = get_arg_parser().parse_args()
+ resultString = discoverVolumes(args.volume, args.list)
+ print resultString
+ sys.exit(utils.PluginStatusCode.OK)