Douglas Schilling Landgraf has uploaded a new change for review. Change subject: sos: Support to SOS 3 ......................................................................
sos: Support to SOS 3 This patch will add support to sos 3 API and keep compatible with old API. Change-Id: I52fbd9431506c5862cc762b4d3f0701ab5cf6a0b Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1060383 Signed-off-by: Douglas Schilling Landgraf <[email protected]> --- M configure.ac M vdsm.spec.in M vdsm/sos/vdsm.py.in 3 files changed, 73 insertions(+), 40 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/88/25188/1 diff --git a/configure.ac b/configure.ac index 55879e7..fd61e03 100644 --- a/configure.ac +++ b/configure.ac @@ -55,6 +55,26 @@ ) AM_CONDITIONAL([HOOKS], [test "${enable_hooks}" = "yes"]) +AC_MSG_CHECKING(sos version) + AC_ARG_VAR([SOS_VERSION], [SOS utility version]) + SOS_VERSION=`$PYTHON -c "import sos; print(sos.__version__)" |cut -c1 2>/dev/null` + AC_MSG_RESULT($SOS_VERSION) + +# SOS - support API 2 and 3 calls +if test x"${SOS_VERSION}" = x2; then + AC_SUBST([SOS_ADD_COPY_SPEC], ["addCopySpec"]) + AC_SUBST([SOS_ADD_COPY_SPEC_LIMIT], ["addCopySpecLimit"]) + AC_SUBST([SOS_CLASS], ["vdsm(sos.plugintools.PluginBase)"]) + AC_SUBST([SOS_CMD_OUTPUT], ["collectExtOutput"]) + AC_SUBST([SOS_GET_OPTION], ["getOption"]) +else + AC_SUBST([SOS_ADD_COPY_SPEC], ["add_copy_spec"]) + AC_SUBST([SOS_ADD_COPY_SPEC_LIMIT], ["add_copy_spec_limit"]) + AC_SUBST([SOS_CLASS], ["Vdsm(Plugin, RedHatPlugin)"]) + AC_SUBST([SOS_CMD_OUTPUT], ["add_cmd_output"]) + AC_SUBST([SOS_GET_OPTION], ["get_option"]) +fi + AC_ARG_ENABLE( [libvirt-sanlock], [AS_HELP_STRING( @@ -185,6 +205,7 @@ AX_PYTHON_MODULE([pthreading], [fatal]) AX_PYTHON_MODULE([pyinotify], [fatal]) AX_PYTHON_MODULE([selinux], [fatal]) +AX_PYTHON_MODULE([sos], [fatal]) # External programs (sorted, please keep in order) AC_PATH_PROG([BLKID_PATH], [blkid], [/sbin/blkid]) diff --git a/vdsm.spec.in b/vdsm.spec.in index 0383532..3be91c7 100644 --- a/vdsm.spec.in +++ b/vdsm.spec.in @@ -97,6 +97,8 @@ BuildRequires: python-pep8 %endif +BuildRequires: sos + %if 0%{?with_systemd} BuildRequires: systemd-units %endif @@ -241,7 +243,13 @@ Requires: psmisc >= 22.6-15 Requires: bridge-utils -Requires: sos + +%if 0%{fedora} >= 20 || 0%{?rhel} >= 7 +Requires: sos >= 3.1 +%else +Requires: sos < 3 +%endif + Requires: tree Requires: dosfstools Requires: genisoimage diff --git a/vdsm/sos/vdsm.py.in b/vdsm/sos/vdsm.py.in index 6bc111a..50f0ac2 100644 --- a/vdsm/sos/vdsm.py.in +++ b/vdsm/sos/vdsm.py.in @@ -18,7 +18,11 @@ # Refer to the README and COPYING files for full details of the license # -import sos.plugintools +try: + from sos.plugins import Plugin, RedHatPlugin +except: + import sos.plugintools + import subprocess import os @@ -39,7 +43,7 @@ config = _importVdsmPylibModule('config').config -class vdsm(sos.plugintools.PluginBase): +class @SOS_CLASS@: """VDSM server related information """ @@ -54,64 +58,64 @@ irrespective of their size. """ if logsize is not None: - self.addCopySpecLimit(path, logsize) + self.@SOS_ADD_COPY_SPEC_LIMIT@(path, logsize) else: - self.addCopySpec(path) + self.@SOS_ADD_COPY_SPEC@(path) def setup(self): os.environ["LVM_SYSTEM_DIR"] = "@VDSMRUNDIR@/lvm" - self.collectExtOutput("/etc/init.d/vdsmd status") - self.addCopySpec("/tmp/vds_installer*") - self.addCopySpec("/tmp/vds_bootstrap*") - self.addCopySpec("/etc/vdsm/*") - self.addCopySpec("/etc/vdsm-reg/*") - logsize = self.getOption('logsize') + self.@SOS_CMD_OUTPUT@("/etc/init.d/vdsmd status") + self.@SOS_ADD_COPY_SPEC@("/tmp/vds_installer*") + self.@SOS_ADD_COPY_SPEC@("/tmp/vds_bootstrap*") + self.@SOS_ADD_COPY_SPEC@("/etc/vdsm/*") + self.@SOS_ADD_COPY_SPEC@("/etc/vdsm-reg/*") + logsize = self.@SOS_GET_OPTION@('logsize') self.__addCopySpecLogLimit("/var/log/vdsm/*", logsize) self.__addCopySpecLogLimit("/var/log/vdsm-reg/*", logsize) self._addVdsmRunDir() - self.addCopySpec("@TRUSTSTORE@") - self.addCopySpec("@HOOKSDIR@") - self.addCopySpec("/var/log/ovirt.log") - self.addCopySpec("/var/log/sanlock.log") + self.@SOS_ADD_COPY_SPEC@("@TRUSTSTORE@") + self.@SOS_ADD_COPY_SPEC@("@HOOKSDIR@") + self.@SOS_ADD_COPY_SPEC@("/var/log/ovirt.log") + self.@SOS_ADD_COPY_SPEC@("/var/log/sanlock.log") p = subprocess.Popen(['/usr/bin/pgrep', 'qemu-kvm'], stdout=subprocess.PIPE) out, err = p.communicate() for line in out.splitlines(): pid = line.strip() - self.addCopySpec("/proc/%s/cmdline" % pid) - self.addCopySpec("/proc/%s/status" % pid) - self.addCopySpec("/proc/%s/mountstats" % pid) - self.collectExtOutput("/bin/ls -l /var/log/core") - self.collectExtOutput("/bin/ls -ldZ /etc/vdsm") - self.collectExtOutput( + self.@SOS_ADD_COPY_SPEC@("/proc/%s/cmdline" % pid) + self.@SOS_ADD_COPY_SPEC@("/proc/%s/status" % pid) + self.@SOS_ADD_COPY_SPEC@("/proc/%s/mountstats" % pid) + self.@SOS_CMD_OUTPUT@("/bin/ls -l /var/log/core") + self.@SOS_CMD_OUTPUT@("/bin/ls -ldZ /etc/vdsm") + self.@SOS_CMD_OUTPUT@( "/bin/su vdsm -s /bin/sh -c '/usr/bin/tree -l @VDSMREPO@'") - self.collectExtOutput( + self.@SOS_CMD_OUTPUT@( "/bin/su vdsm -s /bin/sh -c '/bin/ls -lR @VDSMREPO@'") - self.collectExtOutput("/sbin/lvm vgs -v -o +tags") - self.collectExtOutput("/sbin/lvm lvs -v -o +tags") - self.collectExtOutput("/sbin/lvm pvs -v -o +all") - self.collectExtOutput("/sbin/fdisk -l") - self.collectExtOutput("/usr/bin/iostat") - self.collectExtOutput("/sbin/iscsiadm -m node") - self.collectExtOutput("/sbin/iscsiadm -m session") + self.@SOS_CMD_OUTPUT@("/sbin/lvm vgs -v -o +tags") + self.@SOS_CMD_OUTPUT@("/sbin/lvm lvs -v -o +tags") + self.@SOS_CMD_OUTPUT@("/sbin/lvm pvs -v -o +all") + self.@SOS_CMD_OUTPUT@("/sbin/fdisk -l") + self.@SOS_CMD_OUTPUT@("/usr/bin/iostat") + self.@SOS_CMD_OUTPUT@("/sbin/iscsiadm -m node") + self.@SOS_CMD_OUTPUT@("/sbin/iscsiadm -m session") sslopt = ['', '-s '][config.getboolean('vars', 'ssl')] vdsclient = "/usr/bin/vdsClient " + sslopt + "0 " - self.collectExtOutput(vdsclient + "getVdsCapabilities") - self.collectExtOutput(vdsclient + "getVdsStats") - self.collectExtOutput(vdsclient + "getAllVmStats") - self.collectExtOutput(vdsclient + "list") - self.collectExtOutput(vdsclient + "getVGList") - self.collectExtOutput(vdsclient + "getDeviceList") - self.collectExtOutput(vdsclient + "getAllTasksInfo") - self.collectExtOutput(vdsclient + "getAllTasksStatuses") + self.@SOS_CMD_OUTPUT@(vdsclient + "getVdsCapabilities") + self.@SOS_CMD_OUTPUT@(vdsclient + "getVdsStats") + self.@SOS_CMD_OUTPUT@(vdsclient + "getAllVmStats") + self.@SOS_CMD_OUTPUT@(vdsclient + "list") + self.@SOS_CMD_OUTPUT@(vdsclient + "getVGList") + self.@SOS_CMD_OUTPUT@(vdsclient + "getDeviceList") + self.@SOS_CMD_OUTPUT@(vdsclient + "getAllTasksInfo") + self.@SOS_CMD_OUTPUT@(vdsclient + "getAllTasksStatuses") p = subprocess.Popen(vdsclient + "getConnectedStoragePoolsList", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() for line in out.splitlines()[1:-1]: pool = line.strip() - self.collectExtOutput(vdsclient + "getSpmStatus " + pool) - self.collectExtOutput( + self.@SOS_CMD_OUTPUT@(vdsclient + "getSpmStatus " + pool) + self.@SOS_CMD_OUTPUT@( '/bin/su vdsm -s @PYTHON@ @VDSMDIR@/dumpStorageTable.pyc') def _addVdsmRunDir(self): @@ -123,4 +127,4 @@ for f in glob.glob("@VDSMRUNDIR@/*"): if not f.endswith('.vfd') and not f.endswith('/isoUploader') \ and not f.endswith('/storage'): - self.addCopySpec(f) + self.@SOS_ADD_COPY_SPEC@(f) -- To view, visit http://gerrit.ovirt.org/25188 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I52fbd9431506c5862cc762b4d3f0701ab5cf6a0b Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Douglas Schilling Landgraf <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
