aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKamalesh Babulal <kamalesh@linux.vnet.ibm.com>2015-07-03 14:48:53 +0100
committerBryn M. Reeves <bmr@redhat.com>2015-07-03 14:48:53 +0100
commit8cded9af8d1d75f4896699f83ae3ce289337dd6b (patch)
treec4792d3141dcd9d97f02c3ee57745ca1cd112a20
parentf2d9cc519ac549b9e68e1301b67f1e9b789e2fd3 (diff)
downloadsos-8cded9af8d1d75f4896699f83ae3ce289337dd6b.tar.gz
[policies] Add support for IBM PowerKVM/ZKVM platform
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@linux.vnet.ibm.com> Signed-off-by: Bryn M. Reeves <bmr@redhat.com> --- sos/plugins/__init__.py | 10 +++++++ sos/policies/ibmkvm.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 sos/policies/ibmkvm.py
-rw-r--r--sos/plugins/__init__.py12
-rw-r--r--sos/policies/ibmkvm.py77
2 files changed, 89 insertions, 0 deletions
diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
index 2a944ed4..966a268f 100644
--- a/sos/plugins/__init__.py
+++ b/sos/plugins/__init__.py
@@ -745,6 +745,18 @@ 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 00000000..ff059532
--- /dev/null
+++ b/sos/policies/ibmkvm.py
@@ -0,0 +1,77 @@
+# Copyright (C) IBM Corporation, 2015
+#
+# Authors: Kamalesh Babulal <kamalesh@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