Author: gnichols
Date: 2010-03-09 01:16:52 +0000 (Tue, 09 Mar 2010)
New Revision: 424
Modified:
trunk/v7/redhatrelease.py
Log:
568468 - v7 finds no RT kernel ABI Whitelist
Modified: trunk/v7/redhatrelease.py
===================================================================
--- trunk/v7/redhatrelease.py 2010-03-09 01:16:27 UTC (rev 423)
+++ trunk/v7/redhatrelease.py 2010-03-09 01:16:52 UTC (rev 424)
@@ -24,8 +24,15 @@
self.codeName = None
self.candidate = None
self.valid = False
+ self.kernel = None
+ self.arch = None
+ self.kernelRPMName = None
+ self.kernelDevelRPMName = None
+ self.kernelFlavor = None
+
self._read()
self._parse()
+ self.__getKernelInfo()
def _read(self):
f=open("/etc/redhat-release")
@@ -58,7 +65,61 @@
if match.group("candidate") and
len(match.group("candidate").strip()) > 0:
self.candidate = match.group("candidate").strip()
-
+ def __getKernelInfo(self):
+ uname = os.popen('uname -r')
+ self.kernel = uname.readline()[:-1]
+ uname.close()
+
+ uname = os.popen('uname -m')
+ self.arch = uname.readline()[:-1]
+ uname.close()
+
+ uname = os.popen("uname -r")
+ unameOutput = uname.readline()
+ if not unameOutput:
+ print "Error: uname failed"
+ else:
+ unameOutput = unameOutput.strip()
+
+ self.kernelRPMName = None
+ self.kernelDevelRPMName = "kernel-devel"
+ if "Red Hat" in self.getProduct() and self.getVersion() == 4:
+ pattern =
re.compile("(?P<versionRelease>[^a-z]*)(?P<name>smp|hugemem|largesmp)?$")
+ match = pattern.search(unameOutput)
+ if match:
+ # if the release ends with ELsmp, ELhugemem, or ELlargesmp
+ if match.group("name"):
+ self.kernelRPMName = "kernel-%s-%s" %
(match.group("name"), match.group("versionRelease"))
+ 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)?$")
+ match = pattern.search(unameOutput)
+ if match:
+ flavor = ""
+ if match.group("flavor"):
+ self.kernelFlavor = match.group("flavor")
+ flavor = "%s-" % match.group("flavor")
+ self.kernelRPMName = "kernel-%s%s%s" % (flavor,
match.group("versionRelease"), match.group("product"))
+ self.kernelDevelRPMName = "kernel-%sdevel" % flavor
+ # RT kernel tags rt on the end of el5
+ if match.group("flavor") == "rt":
+ self.kernelRPMName = self.kernelRPMName + "rt"
+ self.kernelDevelRPMName = kernelDevelRPMName + "rt"
+
+ elif 'Fedora' in self.getProduct():
+ pattern =
re.compile("(?P<versionRelease>[^a-z]*)(?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"))
+
+ if not self.kernelRPMName:
+ print "Error: could not determine kernel RPM name"
+ self.kernelRPMName = None
+
+ uname.close()
+
def isValid(self):
return self.valid and self.product and self.version and self.codeName
@@ -69,13 +130,21 @@
def getUpdate(self): return self.update
def getCodeName(self): return self.codeName
def getCandidate(self): return self.candidate
+ def getKernelRPMName(self): return self.kernelRPMName
+ def getKernelDevelRPMName(self): return self.kernelDevelRPMName
+ def getKernel(self): return self.kernel
+ def getArch(self): return self.arch
+ def getKernelFlavor(self): return self.kernelFlavor
+
def getVersionPointUpdate(self):
if self.update:
return "%u.%u" % (self.version, self.update)
else:
return "%u" % self.version
+
+
def dump(self):
print ""
print self.text
@@ -105,6 +174,16 @@
redHatRelease.text = "Red Hat Enterprise Linux Server release 5.5 Beta
(Tikanga)"
redHatRelease._parse()
redHatRelease.dump()
+
+ 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()
+
Show replies by date