1
0
forked from rpms/sos
sos/sos-bz752549-add-gluster-module.patch

100 lines
4.6 KiB
Diff
Raw Normal View History

diff -up sos-2.2/sos/plugins/gluster.py.orig ./sos/plugins/gluster.py
--- sos-2.2/sos/plugins/gluster.py.orig 2012-03-08 13:31:14.393436730 +0000
+++ sos-2.2/sos/plugins/gluster.py 2012-03-08 13:30:55.024434492 +0000
@@ -0,0 +1,84 @@
+### 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+import os.path
+import sos.plugintools
+
+class gluster(sos.plugintools.PluginBase):
+ '''gluster related information'''
+
+ def defaultenabled(self):
+ return True
+
+ def get_volume_names(self, volume_file):
+ """Return a dictionary for which key are volume names according to the
+ output of gluster volume info stored in volume_file.
+ """
+ out=[]
+ fp = open(volume_file, 'r')
+ for line in fp.readlines():
+ if not line.startswith("Volume Name:"):
+ continue
+ volname = line[12:-1]
+ out.append(volname)
+ fp.close()
+ return out
+
+ def checkenabled(self):
+ packages = ["glusterfs", "glusterfs-core"]
+ return os.path.exists("/etc/glusterd") \
+ or os.path.exists("/var/lib/glusterd") \
+ or sos.plugintools.PluginBase.checkenabled(self)
+
+ def setup(self):
+ self.collectExtOutput("/usr/sbin/gluster peer status")
+
+ # check package version handling rename of glusterfs-core -> glusterfs
+ pkg = self.policy().pkgByName("glusterfs-core");
+ if not pkg:
+ pkg = self.policy().pkgByName("glusterfs");
+ # need to handle "no package" case for users who enable with -e/-o
+ if not pkg:
+ return
+
+ gluster_major = int((pkg["version"])[:1])
+ gluster_minor = int((pkg["version"])[2:3])
+ if (gluster_major == 3) and (gluster_minor <= 2):
+ self.addCopySpec("/etc/glusterd/")
+ self.addForbiddenPath("/etc/glusterd/geo-replication/secret.pem")
+ else:
+ self.addCopySpec("/var/lib/glusterd/")
+
+ # glusterfs-server rpm scripts stash this on migration to 3.3.x
+ self.addCopySpec("/etc/glusterd.rpmsave")
+
+ # common to all versions
+ self.addCopySpec("/etc/glusterfs")
+
+ # This will fail on <3.3.x but has no harmful side-effects
+ volume_file = self.collectOutputNow("/usr/sbin/gluster volume info",
+ "gluster_volume_info")
+ if volume_file:
+ for volname in self.get_volume_names(volume_file):
+ self.collectExtOutput("gluster volume statedump %s" % volname)
+ self.collectExtOutput("gluster volume status %s detail" % volname)
+ self.collectExtOutput("gluster volume status %s clients" % volname)
+ self.collectExtOutput("gluster volume status %s mem" % volname)
+ self.collectExtOutput("gluster volume status %s callpool" % volname)
+ self.collectExtOutput("gluster volume status %s inode" % volname)
+ self.collectExtOutput("gluster volume status %s fd" % volname)
+
+ self.collectExtOutput("gluster volume status")
+ # collect this last as some of the other actions create log entries
+ self.addCopySpec("/var/log/glusterfs")
diff -up sos-2.2/sos/plugins/gluster.py.orig sos-2.2/sos/plugins/gluster.py
--- sos-2.2/sos/plugins/gluster.py.orig 2012-05-02 14:09:06.768072384 +0100
+++ sos-2.2/sos/plugins/gluster.py 2012-05-02 14:10:10.568449078 +0100
@@ -73,6 +73,7 @@ class gluster(sos.plugintools.PluginBase
if volume_file:
for volname in self.get_volume_names(volume_file):
self.collectExtOutput("gluster volume statedump %s" % volname)
+ self.collectExtOutput("gluster volume statedump %s nfs" % volname)
self.collectExtOutput("gluster volume status %s detail" % volname)
self.collectExtOutput("gluster volume status %s clients" % volname)
self.collectExtOutput("gluster volume status %s mem" % volname)