diff options
Diffstat (limited to 'plugins/check_quorum_status.py')
-rwxr-xr-x | plugins/check_quorum_status.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/plugins/check_quorum_status.py b/plugins/check_quorum_status.py new file mode 100755 index 0000000..b3994c9 --- /dev/null +++ b/plugins/check_quorum_status.py @@ -0,0 +1,54 @@ +#!/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 +# +from glusternagios import utils +from glusternagios import glustercli + + +def getClusterQuorumStatus(): + exitstatus = 0 + message = "" + try: + volumes = glustercli.volumeInfo() + except glustercli.GlusterLockedException as e: + out = ("UNKNOWN: temporary error. %s" % '.'.join(e.err)) + return utils.PluginStatusCode.UNKNOWN, out + except glustercli.GlusterCmdFailedException as e: + out = ("Quorum status could not be determined. %s" + % '.'.join(e.err)) + return utils.PluginStatusCode.WARNING, out + + quorumVolumes = [] + for volumename, volume in volumes.iteritems(): + if (volume.get('options') and + volume.get('options').get('cluster.server-quorum-type') + == "server"): + quorumVolumes.append(volumename) + if not quorumVolumes: + exitstatus = utils.PluginStatusCode.UNKNOWN + message = "Server quorum not turned on for any volume" + else: + exitstatus = utils.PluginStatusCode.OK + message = ("Server quorum turned on for %s" + % (','.join(quorumVolumes))) + return exitstatus, message + + +if __name__ == '__main__': + exitstatus, message = getClusterQuorumStatus() + print message + exit(exitstatus) |