[sos-devel] [RFC PATCH 1/1] [policies] Add IBM PowerKVM policy

Kamalesh Babulal kamalesh at linux.vnet.ibm.com
Tue Mar 3 08:16:48 UTC 2015


Add support for IBM PowerKVM platform, by introducing PowerKVM policy.
It defines PowerKVM specific details/environment, for sos to validate
the environment and enable plugins to collect information while running
over PowerKVM. Patch also introduces PowerKVM plugin class 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: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
---
 sos/plugins/__init__.py  |  4 +++
 sos/policies/powerkvm.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 sos/policies/powerkvm.py

diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py
index 2a944ed..34b050e 100644
--- a/sos/plugins/__init__.py
+++ b/sos/plugins/__init__.py
@@ -754,6 +754,10 @@ class DebianPlugin(object):
     """Tagging class to indicate that this plugin works with Debian Linux"""
     pass
 
+class PowerKVMPlugin(object):
+    """Tagging class to indicate that this plugin works with IBM PowerKVM Linux"""
+    pass
+
 
 class IndependentPlugin(object):
     """Tagging class that indicates this plugin can run on any platform"""
diff --git a/sos/policies/powerkvm.py b/sos/policies/powerkvm.py
new file mode 100644
index 0000000..fc03663
--- /dev/null
+++ b/sos/policies/powerkvm.py
@@ -0,0 +1,72 @@
+# 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
+import os
+import sys
+from __future__ import print_function
+from sos.plugins import PowerKVMPlugin
+from sos.policies import PackageManager, LinuxPolicy
+
+import os
+import sys
+
+class PowerKVMPolicy(LinuxPolicy):
+	distro = "PowerKVM"
+	vendor = "IBM"
+	vendor_url = "http://www-03.ibm.com/systems/power/software/linux/powerkvm"
+
+	def __init__(self):
+		super(PowerKVMPolicy, self).__init__()
+		self.report_name = ""
+		self.ticket_number = ""
+		self.package_manager = PackageManager(
+			'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"')
+		self.valid_subclasses = [PowerKVMPlugin]
+
+		pkgs = self.package_manager.all_pkgs()
+
+		if not pkgs:
+			print("Could not obtain installed package list", file=sys.stderr)
+			sys.exit(1)
+
+		if pkgs['filesystem']['version'][0] == '3':	
+			self.PATH = "/usr/sbin:/usr/bin:/root/bin"
+		else:
+			self.PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
+		self.PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
+		self.PATH += os.pathsep + "/usr/local/sbin"
+		self.set_exec_path()
+
+	@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
+
+# vim: et ts=4 sw=4
-- 
2.1.2




More information about the sos-devel mailing list