From 8cded9af8d1d75f4896699f83ae3ce289337dd6b Mon Sep 17 00:00:00 2001 From: Kamalesh Babulal Date: Fri, 3 Jul 2015 14:48:53 +0100 Subject: [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 Signed-off-by: Bryn M. Reeves --- sos/plugins/__init__.py | 10 +++++++ sos/policies/ibmkvm.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 sos/policies/ibmkvm.py --- sos/plugins/__init__.py | 12 ++++++++ sos/policies/ibmkvm.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 sos/policies/ibmkvm.py 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 +# +# 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 -- cgit