r508 - in tags: . v7-V1-1R24/v7
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:58:48 +0000 (Wed, 19 May 2010)
New Revision: 508
Added:
tags/v7-V1-1R24/
Modified:
tags/v7-V1-1R24/v7/version.py
Log:
tag version
Copied: tags/v7-V1-1R24 (from rev 507, branches/v7-1.1)
Modified: tags/v7-V1-1R24/v7/version.py
===================================================================
--- branches/v7-1.1/v7/version.py 2010-05-19 17:57:05 UTC (rev 507)
+++ tags/v7-V1-1R24/v7/version.py 2010-05-19 17:58:48 UTC (rev 508)
@@ -1,5 +1,5 @@
# v7/version.py is automatically-generated - DO NOT EDIT
version = '1.1'
-release = '23'
+release = '24'
rhel_version = '5'
13 years, 12 months
r507 - branches/v7-1.1
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:57:05 +0000 (Wed, 19 May 2010)
New Revision: 507
Modified:
branches/v7-1.1/v7.spec.in
Log:
changelog
Modified: branches/v7-1.1/v7.spec.in
===================================================================
--- branches/v7-1.1/v7.spec.in 2010-05-19 17:55:44 UTC (rev 506)
+++ branches/v7-1.1/v7.spec.in 2010-05-19 17:57:05 UTC (rev 507)
@@ -68,6 +68,13 @@
/usr/share/man/man8/v7.8.gz
%changelog
+* Wed May 18 2010 Greg Nichols <gnichols(a)redhat.com>
+
+V7 1.1 R24
+
+ 576497 - fv_* is not listed in v7 print on rhel55-server-x86_64-xen system
+ 584079 - RHEL6 v7 R23 does not parse uname -r output for kernel name
+
* Mon Mar 29 2010 Greg Nichols <gnichols(a)redhat.com>
V7 1.1 R23
13 years, 12 months
r506 - branches/v7-1.1/v7
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:55:44 +0000 (Wed, 19 May 2010)
New Revision: 506
Modified:
branches/v7-1.1/v7/tags.py
Log:
576497 - fv_* is not listed in v7 print on rhel55-server-x86_64-xen system
Modified: branches/v7-1.1/v7/tags.py
===================================================================
--- branches/v7-1.1/v7/tags.py 2010-05-19 17:55:35 UTC (rev 505)
+++ branches/v7-1.1/v7/tags.py 2010-05-19 17:55:44 UTC (rev 506)
@@ -57,6 +57,7 @@
urls="urls"
partner_server="partner-server"
product="product"
+ os_type="os_type"
class Attributes:
v7_version="v7-version"
13 years, 12 months
r505 - branches/v7-1.1/v7
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:55:35 +0000 (Wed, 19 May 2010)
New Revision: 505
Modified:
branches/v7-1.1/v7/fvtest.py
Log:
576497 - fv_* is not listed in v7 print on rhel55-server-x86_64-xen system
Modified: branches/v7-1.1/v7/fvtest.py
===================================================================
--- branches/v7-1.1/v7/fvtest.py 2010-05-19 17:54:44 UTC (rev 504)
+++ branches/v7-1.1/v7/fvtest.py 2010-05-19 17:55:35 UTC (rev 505)
@@ -24,9 +24,10 @@
import shutil
import curses
import time
+from xml.dom.minidom import getDOMImplementation, parseString
from v7.test import Test
-from v7.tags import Constants, DeviceClass
+from v7.tags import Constants, DeviceClass, Tags
from v7.hal import Hal
from v7.device import Device
from v7.command import Command, V7CommandException
@@ -34,6 +35,7 @@
from v7.certificationtest import CertificationDocument
from v7.redhatrelease import RedHatRelease
+
PASSED = 0
FAILED = 1
@@ -57,63 +59,101 @@
self.waitTime = 60 # in minutes
self.environment = Environment()
self.debug = Constants.off
- self.redHatRelease = RedHatRelease()
+ self.redHatRelease = RedHatRelease()
+
+ def __pickHypervisor(self):
+ """ Pick whether xen or kvm virtualization is to be tested """
+ self.hypervisor = Constants.kvm # default
- self.__getHypervisor()
+ # if we're running xen, then do xen
+ if self.redHatRelease.getKernelFlavor() == Constants.xen:
+ self.hypervisor = Constants.xen
+
+ def __setUpHypervisor(self):
+ """ configure the test for the specific hypervisor (kvm or xen) """
+ if self.hypervisor is None:
+ print "Error: no hypervisor set"
+ return
+
+ # check cpu flags, just to log the results.
+ self.__hasVirtualizationCPUFlags(verbose=True)
+
if self.hypervisor == Constants.xen:
+ print "Testing xen virtualization"
self.guestConfigFile = 'v7' + self.hardwarePlatform
self.guestConfigPath = os.path.join(self.environment.getGuestConfigDirectory(), self.guestConfigFile)
self.guestImageDirectory = self.environment.getGuestImageDirectory()
- elif self.hypervisor == Constants.kvm:
+ else: # assume kvm - for manual test scheduling
+ print "Testing kvm virtualization"
+ self.hypervisor = Constants.kvm
self.guestConfigFile = 'v7' + self.hardwarePlatform + ".xml"
self.guestConfigPath = os.path.join(self.environment.getKVMGuestConfigDirectory(), self.guestConfigFile)
self.guestImageDirectory = self.environment.getKVMGuestImageDirectory()
- def __getHypervisor(self):
- self.hypervisor = None
- if self.redHatRelease.getVersion() < 5 or self.redHatRelease.getKernelFlavor() == Constants.rt:
- # pre-RHEL5 or real-time kernel:, no OS support for virtualization
- return
-
+ def __isHVMCapableViaLibvirt(self):
+ """ determine if system is FV/hvm capable, via virsh from libvirt """
+ virsh = Command("virsh capabilities")
+ try:
+ virsh.run()
+ parser = parseString("".join(virsh.output))
+ elements = parser.getElementsByTagName("guest")
+ for element in elements:
+ osType = element.getElementsByTagName(Tags.os_type)[0].childNodes[0]
+ if osType.data == "hvm":
+ return True
+ return isHvm
+ except Exception, e:
+ if self.debug != Constants.off:
+ print "Note: could not parse virsh capabilities"
+ print e
+
+ def __isHVMInCapabilitiesFile(self):
+ """ try /sys/../capabilities, looking for xen FV support"""
+ try:
+ capabilities = '/sys/hypervisor/properties/capabilities'
+ capabilityFile = open(capabilities)
+ self.hypervisorCapabilities = capabilityFile.readline()
+ capabilityFile.close()
+ if Constants.hvm in self.hypervisorCapabilities:
+ return True
+ except IOError:
+ if self.debug != Constants.off:
+ print "Note: could not read " + capabilities
+
+ #otherwise
+ return False
+
+ def __hasVirtualizationCPUFlags(self, verbose=False):
+ """ check cpuinfo for virtualization flags """
cpuflags = Command("fgrep flags /proc/cpuinfo")
try:
- if self.hardwarePlatform == "ia64" or cpuflags.getString(regex="(vmx|smx|svm)", singleLine=False):
- # read the hypervisor capabilities if that file exists
- try:
- capabilityFile = open('/sys/hypervisor/properties/capabilities')
- self.hypervisorCapabilities = capabilityFile.readline()
- capabilityFile.close()
- if Constants.hvm in self.hypervisorCapabilities:
- self.hypervisor = Constants.xen
- except IOError:
- self.hypervisorCapabilities = 'none'
-
- # if not xen, plan in for kvm
- if self.hypervisor != Constants.xen:
- self.hypervisor = Constants.kvm
- except V7CommandException, e:
- pass # no virtualization support
+ flags = cpuflags.getString(regex="(vmx|smx|svm)", singleLine=False)
+ if verbose or self.debug != Constants.off:
+ print "/proc/cpuinfo has %s flag" % flags
+ return True
+ except V7CommandException:
+ if verbose or self.debug != Constants.off:
+ print "Note: /proc/cpuinfo does not have vmx, smx, or svm flags"
+
+ return False
+
+ def configureHypervisor(self):
+ # determine whether to use xen or kvm virtualization
+ self.__pickHypervisor()
+ # configure test for the righ hypervisor
+ self.__setUpHypervisor()
def plan(self, devices):
tests = list()
- if self.hypervisor == Constants.xen:
- for device in devices:
- if Constants.xen in device.getProperty("system.kernel.version"):
- self.hypervisor = Constants.xen
- test = self.makeCopy()
- test.setDevice(device)
- tests.append(test)
- return tests
-
- # otherwise
- if self.hypervisor == Constants.kvm:
- test = self.makeCopy()
- tests.append(test)
-
+ if self.redHatRelease.getVersion() >= 5 and self.redHatRelease.getKernelFlavor() != Constants.rt:
+ if self.__isHVMCapableViaLibvirt() or self.__isHVMInCapabilitiesFile() or self.__hasVirtualizationCPUFlags():
+ test = self.makeCopy()
+ tests.append(test)
return tests
def getRequiredRPMs(self):
+ self.__pickHypervisor()
rpms = ["libvirt", "libvirt-python", "python-virtinst"]
if self.hypervisor == Constants.kvm:
if "Fedora" in self.redHatRelease.getProduct():
@@ -123,6 +163,7 @@
rpms.append('kvm-tools')
elif self.redHatRelease.getVersion() is 6:
rpms.append("qemu-kvm-tools")
+ rpms.append("python-virtinst")
return rpms
def verifyGuest(self):
@@ -191,6 +232,7 @@
os.remove(filename + ".tar.bz2")
# move it to the right place
shutil.move(unpackedFilename, os.path.join(destinationDirectory, filename))
+ print "Moved: " + unpackedFilename + " to " + os.path.join(destinationDirectory, filename)
restorecon = Command("/sbin/restorecon -v " + os.path.join(destinationDirectory, filename))
restorecon.echo()
print "Downloaded " + filename + " to " + destinationDirectory
@@ -431,6 +473,8 @@
def run(self):
+ # determine whether to use xen or kvm virtualization
+ self.configureHypervisor()
# verify the guest, start if necessary
if not self.verifyGuest():
return FAILED
13 years, 12 months
r504 - branches/v7-1.1/v7
by gnichols@fedoraproject.org
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)
13 years, 12 months
r503 - branches/v7-1.1
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:35:16 +0000 (Wed, 19 May 2010)
New Revision: 503
Modified:
branches/v7-1.1/Makefile
Log:
R24
Modified: branches/v7-1.1/Makefile
===================================================================
--- branches/v7-1.1/Makefile 2010-05-19 17:32:56 UTC (rev 502)
+++ branches/v7-1.1/Makefile 2010-05-19 17:35:16 UTC (rev 503)
@@ -14,7 +14,7 @@
# Author: Greg Nichols
V7_VERSION := 1.1
-V7_RELEASE := 23
+V7_RELEASE := 24
V7_VERSION_RELEASE := $(V7_VERSION)-$(V7_RELEASE)
V7_VERSION_PY := v7/version.py
V7_SVN_MODULE := svn+ssh://svn.fedorahosted.org/svn/v7
13 years, 12 months
r502 - branches
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:32:56 +0000 (Wed, 19 May 2010)
New Revision: 502
Added:
branches/v7-1.1/
Log:
v7 1.1 branch from R23
Copied: branches/v7-1.1 (from rev 501, tags/v7-V1-1R23)
13 years, 12 months
r501 - branches
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:30:19 +0000 (Wed, 19 May 2010)
New Revision: 501
Removed:
branches/v7-1.1/
Log:
deleting bad branch
13 years, 12 months
r500 - branches/v7-1.1
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:06:24 +0000 (Wed, 19 May 2010)
New Revision: 500
Modified:
branches/v7-1.1/Makefile
Log:
v7 1.1 R27
Modified: branches/v7-1.1/Makefile
===================================================================
--- branches/v7-1.1/Makefile 2010-05-19 17:02:45 UTC (rev 499)
+++ branches/v7-1.1/Makefile 2010-05-19 17:06:24 UTC (rev 500)
@@ -14,7 +14,7 @@
# Author: Greg Nichols
V7_VERSION := 1.0
-V7_RELEASE := 25
+V7_RELEASE := 27
V7_VERSION_RELEASE := $(V7_VERSION)-$(V7_RELEASE)
V7_VERSION_PY := v7/version.py
V7_SVN_MODULE := svn+ssh://svn.fedorahosted.org/svn/v7
13 years, 12 months
r499 - branches
by gnichols@fedoraproject.org
Author: gnichols
Date: 2010-05-19 17:02:45 +0000 (Wed, 19 May 2010)
New Revision: 499
Added:
branches/v7-1.1/
Log:
v7 1.1 branch
Copied: branches/v7-1.1 (from rev 498, tags/v7-V1-0R25)
13 years, 12 months