[sos-devel] [RFC PATCH] Add IBM PowerKVM policy

Kamalesh Babulal kamalesh at linux.vnet.ibm.com
Tue May 26 09:51:20 UTC 2015


Add support for IBM PowerKVM/ZKVM platform, by introducing
PowerKVM/ZKVM policy. It defines PowerKVM/ZKVM specific
details/environment, for sos to validate the environment
and enable plugins to collect information while running over
PowerKVM/ZKVM. Patch also introduces PowerKVM/ZKVM plugin
classes which could be used by plugins, when we add support
for them individually later.

Signed-off-by: Kamalesh Babulal <kamalesh at linux.vnet.ibm.com>
Cc: Bryn M. Reeves <bmr at redhat.com>
---
 sos/plugins/__init__.py | 10 +++++++
 sos/policies/ibmkvm.py  | 76 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+)
 create mode 100644 sos/policies/ibmkvm.py

diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
index 2a944ed..4d3a0ea 100644
--- a/sos/plugins/__init__.py
+++ b/sos/plugins/__init__.py
@@ -745,6 +745,16 @@ class RedHatPlugin(object):
     pass


+class PowerKVMPlugin(RedHatPlugin):
+    """Tagging class to indicate that this plugin works with IBM PowerKVM Linux"""
+    pass
+
+
+class ZKVMPlugin(RedHatPlugin):
+    """Tagging class to indicate that this plugin works with IBM ZKVM Linux"""
+    pass
+
+
 class UbuntuPlugin(object):
     """Tagging class to indicate that this plugin works with Ubuntu Linux"""
     pass
diff --git a/sos/policies/ibmkvm.py b/sos/policies/ibmkvm.py
new file mode 100644
index 0000000..573afc6
--- /dev/null
+++ b/sos/policies/ibmkvm.py
@@ -0,0 +1,76 @@
+# Copyright (C) IBM Corporation, 2015
+#
+# Authors:
+#	Kamalesh Babulal <kamalesh at linux.vnet.ibm.com>
+#
+# 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, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+#
+from __future__ import print_function
+
+from sos.plugins import PowerKVMPlugin, ZKVMPlugin, RedHatPlugin
+from sos.policies.redhat import RedHatPolicy
+
+import os
+
+class PowerKVMPolicy(RedHatPolicy):
+    distro = "PowerKVM"
+    vendor = "IBM"
+    vendor_url = "http://www-03.ibm.com/systems/power/software/linux/powerkvm"
+
+    def __init__(self):
+        super(PowerKVMPolicy, self).__init__()
+        self.valid_subclasses = [PowerKVMPlugin, RedHatPlugin]
+
+    @classmethod
+    def check(self):
+        """This method checks to see if we are running on PowerKVM.
+           It returns True or False."""
+        return os.path.isfile('/etc/ibm_powerkvm-release')
+
+    def dist_version(self):
+        try:
+            with open('/etc/ibm_powerkvm-release', 'r') as fp:
+                version_string = fp.read();
+                return version_string[2][0]
+            return False
+        except:
+            return False
+
+class ZKVMPolicy(RedHatPolicy):
+    distro = "IBM Hypervisor"
+    vendor = "IBM Hypervisor"
+    vendor_url = "http://www.ibm.com/systems/z/linux/IBMHypervisor/support/"
+
+    def __init__(self):
+        super(ZKVMPolicy, self).__init__()
+        self.valid_subclasses = [ZKVMPlugin, RedHatPlugin]
+
+    @classmethod
+    def check(self):
+        """This method checks to see if we are running on IBM Z KVM. It returns True
+        or False."""
+        return os.path.isfile('/etc/base-release')
+
+    def dist_version(self):
+        try:
+            with open('/etc/base-release', 'r') as fp:
+                version_string = fp.read();
+                return version_string.split(' ',4)[3][0]
+            return False
+        except:
+            return False
+
+
+# vim: set ts=4 sw=4
--
2.1.2




More information about the sos-devel mailing list