diff options
author | Kamalesh Babulal <kamalesh@linux.vnet.ibm.com> | 2015-07-03 14:48:53 +0100 |
---|---|---|
committer | Bryn M. Reeves <bmr@redhat.com> | 2015-07-03 14:48:53 +0100 |
commit | 8cded9af8d1d75f4896699f83ae3ce289337dd6b (patch) | |
tree | c4792d3141dcd9d97f02c3ee57745ca1cd112a20 | |
parent | f2d9cc519ac549b9e68e1301b67f1e9b789e2fd3 (diff) | |
download | sos-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__.py | 12 | ||||
-rw-r--r-- | sos/policies/ibmkvm.py | 77 |
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 |