aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/sos/plugins/veritas.py222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/lib/sos/plugins/veritas.py b/src/lib/sos/plugins/veritas.py
new file mode 100644
index 00000000..a66b11af
--- /dev/null
+++ b/src/lib/sos/plugins/veritas.py
@@ -0,0 +1,222 @@
+### 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 commands
+import sos.plugintools
+
+class veritas(sos.plugintools.PluginBase):
+ """veritas related information
+ """
+ # License
+ license = {"VXLICENSE" : "/usr/sbin/vxlicense", "VXLICREP" : "/usr/sbin/vxlicense",
+ "OLD_VXLICREP" : "/var/adm/VRTSshrd/VRTSlic/bin/vxlicrep",
+ "VXLICTEST" : "/sbin/vxlictest"}
+
+ # Slim
+ slim = {"VSSAT" : "/opt/VRTSat/bin/vssat"}
+
+ # VxVM
+ vxvm = {"VXDCTL" : "/usr/sbin/vxdctl", "VXPRINT" : "/usr/lib/vxvm/diag.d/vxkprint",
+ "VXDISK" : "/usr/sbin/vxdisk", "VXDG" : "/usr/sbin/vxdg", "VXRLINK" : "/usr/sbin/vxrlink",
+ "MACROSD" : "/usr/lib/vxvm/diag.d/macros.d", "VXDMPADM" : "/usr/sbin/vxdmpadm",
+ "VXSTAT" : "/usr/sbin/vxstat", "VXCONFIGD" : "/usr/sbin/vxconfigd",
+ "VXDDLADM" : "/usr/sbin/vxddladm", "VXDIAGDIR" : "/usr/lib/vxvm/diag.d",
+ "VXTRACE" : "/usr/sbin/vxtrace", "VXRVG" : "/usr/sbin/vxrvg",
+ "VXCLUSTADM" : "/etc/vx/bin/vxclustadm", "VXVSET" : "/usr/sbin/vxvset"}
+
+ # VFR
+ vfr = {"VFRC" : "/usr/sbin/vfrc"}
+
+ # VxFS
+ vxfs = {"VXLD_PRINT" : "/sbin/vxld_print", "FSCKPTADM" : "/usr/lib/fs/vxfs/fsckptadm",
+ "FCLADM" : "/opt/VRTS/bin/fcladm", "FSAPADM" : "/opt/VRTS/bin/fsapadm",
+ "FSDB" : "/opt/VRTS/bin/fsdb", "FSADM" : "/usr/lib/fs/vxfs/fsadm",
+ "VXTUNEFS" : "/usr/lib/fs/vxfs/vxtunefs", "FSTYP" : "/usr/lib/fs/vxfs/fstyp"}
+
+ #vcs
+ vcs = {"HARES" : "/opt/VRTSvcs/bin/hares","HAGRP" : "/opt/VRTSvcs/bin/hagrp",
+ "HASYS" : "/opt/VRTSvcs/bin/hasys","HACLUS" : "/opt/VRTSvcs/bin/haclus",
+ "HACONF" : "/opt/VRTSvcs/bin/haconf","HASTATUS" : "/opt/VRTSvcs/bin/hastatus",
+ "GABCONFIG" : "/sbin/gabconfig", "GABDISK" : "/sbin/gabdisk",
+ "HATYPE" : "/opt/VRTSvcs/bin/hatype", "LLTSTAT" : "/sbin/lltstat",
+ "GABDEBUG" : "/sbin/gabdebug", "GABDISKHB" : "/sbin/gabdiskhb",
+ "GABDISKX" : "/sbin/gabdiskx", "GABPORT" : "/sbin/gabport",
+ "HAD" : "/opt/VRTSvcs/bin/had","GETCOMMS" : "/opt/VRTSgab/getcomms",
+ "HADISCOVER" : "/opt/VRTSvcs/bin/hadiscover",
+ "OraDiscovery" : "/opt/VRTSvcs/bin/Oracle/OraDiscovery.pl",
+ "GETVCSOPS" : "/opt/VRTSvcs/bin/getvcsops","GETDBAC" : "/opt/VRTSvcs/bin/getdbac"}
+ # module list
+ module_list = ["vxvm", "vxfs", "isis", "samba", "vcs", "spnas", "txpt", "vsap",
+ "vrtsisp", "vlic", "vrw", "cpi", "cca", "spc", "vxfen", "cmc",
+ "slim", "sfms", "dbed","vxportal","vxspec","vxio","vxdmpfs",
+ "vxdmp"]
+
+ package_list = ["VRTSfppm","VRTSfspro","VRTSob","VRTSlvmconv","VRTSvxmsa",
+ "VRTSfsdoc", "VRTSap","VRTSap","VRTScpi","VRTSvxvm","VRTSvmpro",
+ "VRTSddlpr","VRTSobgui","VRTSvmman","VRTScccfg","VRTSsal",
+ "VRTSccshd","VRTStep","VRTStep","VRTSvxfs","VRTSalloc",
+ "VRTSfsman","VRTSClariionCx600","VRTSccdam","VRTSccsta",
+ "VRTSvlic"]
+
+ def checkenabled(self):
+ for i in commands.getoutput("/bin/rpm -qa | /bin/grep -i VRTS"):
+ pkg = i.split('-')[0]
+ if self.cInfo["policy"].pkgByName(pkg) != None:
+ return True
+ return False
+
+ def get_vxfs(self):
+ """ capture information related to VXFS
+ """
+ self.addCopySpec("/etc/vx/tunefstab")
+ # get all vxfs mountpoints and capture various information
+ for mntpnt in commands.getoutput("/bin/df -P -T | /bin/grep vxfs | /usr/bin/awk '{ print $7 }'"):
+ bdev = commands.getoutput("/bin/mount | /bin/grep 'on %s' | /usr/bin/awk '{ print $1 }'" % mntpnt)
+ if mntpnt == "/":
+ mntname="_root_"
+ else:
+ mntname=commands.getoutput("/bin/echo %s | sed s#/#_#g" % mntpnt)
+ self.collectExtOutput("/bin/df -k %s" % mntpnt)
+ self.collectExtOutput("%s -v %s" % (self.vxfs["FSTYP"],bdev))
+ self.collectExtOutput("%s %s" % (self.vxfs["FSADM"],mntpnt))
+ self.collectExtOutput("%s -p %s" % (self.vxfs["VXTUNEFS"],mntpnt))
+ self.collectExtOutput("%s state %s" % (self.vxfs["FCLADM"],mntpnt))
+ self.collectExtOutput("%s queryfs %S" % (self.vxfs["FSAPADM"],mntpnt))
+ self.collectExtOutput("%s -n 'VERITAS File System' -l" % self.license["VXLICTEST"])
+ return
+
+ def get_vxvm(self):
+ """ Veritas volume manager information
+ """
+ # vxdctl and vxclustadm information
+ self.collectExtOutput("%s mode" % self.vxvm["VXDCTL"])
+ self.collectExtOutput("%s -c mode" % self.vxvm["VXDCTL"])
+ self.collectExtOutput("%s license" % self.vxvm["VXDCTL"])
+ self.collectExtOutput("%s support" % self.vxvm["VXDCTL"])
+ nodestate=commands.getoutput("%s help | grep '\[-v\] nodestate" % self.vxvm["VXCLUSTADM"])
+ if nodestate is None:
+ self.collectExtOutput("%s -v nodestate" % self.vxvm["VXCLUSTADM"])
+ else:
+ self.collectExtOutput("%s nodestate" % self.vxvm["VXCLUSTADM"])
+ nidmap=commands.getoutput("% help | grep 'nidmap'" % self.vxvm["VXCLUSTADM"])
+ if nidmap is None:
+ self.collectExtOutput("%s nidmap" % self.vxvm["VXCLUSTADM"])
+ self.collectExtOutput("%s dumpmsg" % self.vxvm["VXCLUSTADM"])
+ self.collectExtOutput("%s transstate" % self.vxvm["VXCLUSTADM"])
+ self.addCopySpec("/var/adm/vx/cmdlog*")
+ self.addCopySpec("/var/adm/vx/translog*")
+ self.addCopySpec("/VXVM*UPGRADE*")
+ self.addCopySpec("/var/vxvm")
+ self.collectExtOutput("/bin/ls -l /dev/vx*")
+ self.collectExtOutput("/bin/ls -laR /etc/vx")
+ self.addCopySpec("/etc/vx")
+ self.addCopySpec("/etc/vxvmconf")
+ self.addCopySpec("/etc/default/vxassist")
+ # vxvm - vxdctl information
+ vxdctlmode=commands.getoutput("%s mode | /usr/bin/awk ' { print $2 } '" % self.vxvm["VXDCTL"])
+ if vxdctlmode == "disabled" or vxdctlmode == "not-running":
+ return
+ # vxvm - vxdisk information
+ self.collectExtOutput("%s list" % self.vxvm["VXDISK"])
+ vxdisk_path=commands.getoutput("%s help | grep 'path'" % self.vxvm["VXDISK"])
+ if vxdisk_path is None:
+ self.collectExtOutput("%s path" % self.vxvm["VXDISK"])
+ self.collectExtOutput("%s -o alldgs list" % self.vxvm["VXDISK"])
+ self.collectExtOutput("%s -s list" % self.vxvm["VXDISK"])
+ for i in commands.getoutput("%s -q list | /usr/bin/awk ' { print $1 } ' | /bin/grep -v '^-$'" % self.vxvm["VXDISK"]):
+ self.collectExtOutput("%s list %s" % (self.vxvm["VXDISK"], i))
+ # vxvm - vxdg information
+ self.collectExtOutput("%s list" % self.vxvm["VXDG"])
+ self.collectExtOutput("%s free" % self.vxvm["VXDG"])
+ if commands.getoutput("%s help | grep 'bootdg'" % self.vxvm["VXDG"]) is None:
+ self.collectExtOutput("%s bootdg" % self.vxvm["VXDG"])
+ # vxvm - vxtrace information
+ self.collectExtOutput("%s -lE" % self.vxvm["VXTRACE"])
+ for i in commands.getoutput("%s -q list | /usr/bin/awk ' { print $1 } '" % self.vxvm["VXDG"]):
+ self.collectExtOutput("%s list %i" % (self.vxvm["VXDG"],i))
+ self.collectExtOutput("%s -g %s" % (self.vxvm["VXSTAT"],i))
+ self.collectExtOutput("%s -mvpshr -g %s" % (self.vxvm["VXPRINT"],i))
+ self.collectExtOutput("%s -m -g %s" % (self.vxvm["VXPRINT"],i))
+ self.collectExtOutput("%s list" % self.vxvm["VXVSET"])
+ self.addCopySpec("/proc/sys/vxvm/vxinfo")
+ self.addcopyspec("/proc/sys/vxvm/vxio")
+ # vvr/svrm specific information
+ self.addCopySpec("/etc/vx/vras")
+ return
+
+ def get_vcs(self):
+ """ Veritas cluster information
+ """
+ self.collectExtOutput("%s -dump" % self.vcs["HACONF"])
+ self.addCopySpec("/etc/VRTSvcs/*")
+ self.addCopySpec("/etc/llt*")
+ self.addCopySpec("/etc/gab*")
+
+ #copy log files, etc
+ self.addCopySpec("/var/VRTSvcs/*")
+ self.addCopySpec("/var/adm/streams")
+ self.addCopySpec("/var/adm/VRTSshrd/VRTSlic")
+
+ # get state information
+
+ self.collectExtOutput(self.vcs[LLTSTAT])
+ self.collectExtOutput("%s -vvn" % self.vcs["LLTSTAT"])
+ self.collectExtOutput("%s -a" % self.vcs["GABCONFIG"])
+ self.collectExtOutput("%s -l" % self.vcs["GABDISK"])
+ self.collectExtOutput("%s -l" % self.vcs["GABDISKHB"])
+ self.collectExtOutput("%s -l" % self.vcs["GABDISKX"])
+
+ self.collectExtOutput("%s -summary" % self.vcs["HASTATUS"])
+ self.collectExtOutput("%s -display -all" % self.vcs["HARES"])
+ self.collectExtOutput("%s -dep" % self.vcs["HARES"])
+ self.collectExtOutput("%s -display -all" % self.vcs["HAGRP"])
+ self.collectExtOutput("%s -dep" % self.vcs["HAGRP"])
+ self.collectExtOutput("%s -display" % self.vcs["HATYPE"])
+ self.collectExtOutput("%s -display" % self.vcs["HASYS"])
+ self.collectExtOutput("%s -display" % self.vcs["HACLUS"])
+
+ # TODO: get agents section
+
+ # get cores
+ self.addCopySpec("/opt/VRTSvcs/bin/core*")
+ self.addCopySpec("/opt/VRTSvcs/core*")
+
+ # TODO: get comms
+
+ # vcs gui
+ self.addCopySpec("/opt/VRTSvcs/gui/conf")
+
+ # vcs quickstart
+ vcsmode = commands.getoutput("%s -value VCSMODE" % self.vcs["HACLUS"])
+ if vcsmode == "VCSQS":
+ self.collectExtOutput("%s -discover Application User" % self.vcs["HADISCOVER"])
+ self.collectExtOutput("%s -discover Mount MountPoint" % self.vcs["HADISCOVER"])
+ self.collectExtOutput("%s -discover NFS Nservers" % self.vcs["HADISCOVER"])
+ self.collectExtOutput("%s -discover NIC Device" % self.vcs["HADISCOVER"])
+ self.collectExtOutput("%s -discover Oracle Instances" % self.vcs["HADISCOVER"])
+ self.collectExtOutput("%s -discover Share PathName" % self.vcs["HADISCOVER"])
+
+ def get_vxfen(self):
+ pass
+
+ def setup(self):
+ # TODO: Do necessary checks for different archs, i.e. z-series and ia64
+ self.collectExtOutput("/bin/rpm -qa | /bin/grep -i VRTS | /bin/grep -v doc | /bin/grep -v man")
+ # Determine what information to collect based on installed packages
+ if self.cInfo["policy"].pkgByName("VRTSvxfs"): get_vxfs()
+ if self.cInfo["policy"].pkgByName("VRTSvxfs"): get_vxvm()
+ # I think if one of these is present it is assumed that VCS is installed
+ if self.cInfo["policy"].pkgByName("VRTSvmpro") or self.cInfo["policy"].pkgByName("VRTSfspro"): get_vcs()
+ return
+