Author: gnichols
Date: 2010-05-19 17:54:44 +0000 (Wed, 19 May 2010)
New Revision: 504
Modified:
branches/v7-1.1/v7/redhatrelease.py
Log:
584079 - RHEL6 v7 R23 does not parse uname -r output for kernel name - also 5.5 RT kernel
Modified: branches/v7-1.1/v7/redhatrelease.py
===================================================================
--- branches/v7-1.1/v7/redhatrelease.py 2010-05-19 17:35:16 UTC (rev 503)
+++ branches/v7-1.1/v7/redhatrelease.py 2010-05-19 17:54:44 UTC (rev 504)
@@ -76,10 +76,14 @@
uname = os.popen("uname -r")
unameOutput = uname.readline()
+ uname.close()
if not unameOutput:
print "Error: uname failed"
else:
unameOutput = unameOutput.strip()
+ self.parseUnameOutput(unameOutput)
+
+ def parseUnameOutput(self, unameOutput):
self.kernelRPMName = None
self.kernelDevelRPMName = "kernel-devel"
@@ -93,8 +97,8 @@
else:
self.kernelRPMName = "kernel-%s" %
match.group("versionRelease")
- elif "Red Hat" in self.getProduct() and self.getVersion() == 5:
- pattern =
re.compile("(?P<versionRelease>[^a-z]*)(?P<product>el5)(?P<flavor>xen|PAE|rt)?$")
+ elif "Red Hat" in self.getProduct() and self.getVersion() >= 5:
+ pattern =
re.compile("(?P<versionRelease>.*)(?P<product>el[0-9]+)(?P<flavor>xen|PAE|rt)?(?P<arch>.*)$")
match = pattern.search(unameOutput)
if match:
flavor = ""
@@ -108,7 +112,7 @@
self.kernelRPMName = self.kernelRPMName + "rt"
elif 'Fedora' in self.getProduct():
- pattern =
re.compile("(?P<versionRelease>[^a-z]*)(?P<product>fc[0-9]+)(?P<arch>\..*)$")
+ pattern =
re.compile("(?P<versionRelease>.*)(?P<product>fc[0-9]+)(?P<arch>.*)$")
match = pattern.search(unameOutput)
if match:
self.kernelRPMName = "kernel-%s%s%s" %
(match.group("versionRelease"), match.group("product"),
match.group("arch"))
@@ -116,10 +120,26 @@
if not self.kernelRPMName:
print "Error: could not determine kernel RPM name"
self.kernelRPMName = None
-
- uname.close()
-
-
+ return False
+
+ return True
+
+ def getProductFromUname(self, unameOutput):
+ pattern =
re.compile("(?P<product>.el|.fc)(?P<version>[0-9]+)")
+ self.product = None
+ self.version = None
+ match = pattern.search(unameOutput)
+ if match:
+ if match.group("product") == ".fc":
+ self.product = "Fedora"
+ elif match.group("product") == ".el":
+ self.product = "Red Hat Enterprise Linux"
+ if match.group("version"):
+ self.version = int(match.group("version"))
+ return True
+ else:
+ return False
+
def isValid(self):
return self.valid and self.product and self.version and self.codeName
@@ -159,33 +179,64 @@
print "Not Valid"
if __name__ == "__main__":
+ PASSED = 0
+ FAILED = 1
+ result = PASSED
redHatRelease = RedHatRelease()
redHatRelease.dump()
+ if not redHatRelease.isValid():
+ result = FAILED
+
+ print "\nTesting some other /etc/redhatrelease strings"
+ texts = ("Red Hat Enterprise Linux Server release 5.4 (Tikanga)",
+ "Red Hat Enterprise Linux release 4 (Bogus Update 3)",
+ "Red Hat Enterprise Linux Server release 5.5 Beta (Tikanga)",
+ "Red Hat Enterprise Linux release 6.0 Beta (Santiago)",
+ )
- redHatRelease.text = "Red Hat Enterprise Linux Server release 5.4
(Tikanga)"
- redHatRelease._parse()
- redHatRelease.dump()
+ for text in texts:
+ print "\n"
+ redHatRelease.text = text
+ redHatRelease._parse()
+ redHatRelease.dump()
+ if not redHatRelease.isValid():
+ print "Error: text parsing failed"
+ result = FAILED
+
+ print "\nTest uname parsing on this system, and number of other kernels"
+ unameOutputs = (os.uname()[2],
+ "2.6.33.2-rt13.13.el5rt",
+ "2.6.24.7-155.el5rt",
+ "2.6.18-164.15.1.el5",
+ "2.6.18-164.15.1.el5xen",
+ "2.6.18-164.15.1.el5PAE",
+ "2.6.32-17.el6.x86_64",
+ "2.6.26.8-57.fc8",
+ "2.6.27.25-78.2.56.fc9.i686",
+ "2.6.30.10-105.2.23.fc11.x86_64",
+ "2.6.32.11-99.fc12.x86_64",
+ "2.6.34-0.38.rc5.git0.fc14.x86_64",
+ "2.6.31.12-1.rt21.1.fc12.ccrma.x86_64")
- redHatRelease.text = "Red Hat Enterprise Linux release 4 (Bogus Update 3)"
- redHatRelease._parse()
- redHatRelease.dump()
- redHatRelease.text = "Red Hat Enterprise Linux Server release 5.5 Beta
(Tikanga)"
- redHatRelease._parse()
- redHatRelease.dump()
- redHatRelease = RedHatRelease()
- redHatRelease.text = "Red Hat Enterprise Linux release 6.0 Beta
(Santiago)"
- redHatRelease._parse()
- redHatRelease.dump()
+ for unameOutput in unameOutputs:
+ redHatRelease = RedHatRelease()
+ print "\nuname: " + unameOutput
+ redHatRelease.getProductFromUname(unameOutput)
+ print (redHatRelease.getProduct() + " %u") %
redHatRelease.getVersion()
+ if redHatRelease.parseUnameOutput(unameOutput):
+ print "kernel RPM: " + redHatRelease.getKernelRPMName()
+ print "kernel devel RPM: " + redHatRelease.getKernelDevelRPMName()
+ if redHatRelease.getKernelFlavor():
+ print "kernel flavor: " + redHatRelease.getKernelFlavor()
+ else:
+ result = FAILED
- print "\nTest uname parsing:"
- redHatRelease = RedHatRelease()
- print "kernel: " + redHatRelease.getKernel()
- print "arch: " + redHatRelease.getArch()
- print "kernel RPM: " + redHatRelease.getKernelRPMName()
- print "kernel devel RPM: " + redHatRelease.getKernelDevelRPMName()
- if redHatRelease.getKernelFlavor():
- print "kernel flavor: " + redHatRelease.getKernelFlavor()
+ if result is FAILED:
+ print "FAILED"
+ else:
+ print "PASSED"
+ exit(result)
Show replies by date