def _image2XMLhelper(self, image_xml, output_xmls, qemu=False): image2guestdir = self.basedir + "image2guest/" image = virtinst.ImageParser.parse_file(self.basedir + image_xml) if type(output_xmls) is not list: output_xmls = [output_xmls] conn = qemu and self.qemuconn or self.conn caps = qemu and self.qemucaps or self.caps gtype = qemu and "qemu" or "xen" for idx in range(len(output_xmls)): fname = output_xmls[idx] inst = virtinst.ImageInstaller(image, caps, boot_index=idx, conn=conn) utils.set_conn(conn) if inst.is_hvm(): g = utils.get_basic_fullyvirt_guest(typ=gtype) else: g = utils.get_basic_paravirt_guest() g.installer = inst g._prepare_install(None) actual_out = g.get_config_xml(install=False) expect_file = os.path.join(image2guestdir + fname) expect_out = utils.read_file(expect_file) expect_out = expect_out.replace("REPLACEME", os.getcwd()) utils.diff_compare(actual_out, expect_file, expect_out=expect_out) utils.reset_conn()
def testManyDisks2(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk()) g.disks.append(VirtualDisk(conn=g.conn, path="/dev/loop0", device=VirtualDisk.DEVICE_CDROM, driverType="raw")) g.disks.append(VirtualDisk(conn=g.conn, path="/dev/loop0", device=VirtualDisk.DEVICE_DISK, driverName="qemu", format="qcow2")) g.disks.append(VirtualDisk(conn=g.conn, path=None, device=VirtualDisk.DEVICE_CDROM, bus="scsi")) g.disks.append(VirtualDisk(conn=g.conn, path=None, device=VirtualDisk.DEVICE_FLOPPY)) g.disks.append(VirtualDisk(conn=g.conn, path="/dev/loop0", device=VirtualDisk.DEVICE_FLOPPY, driverName="phy", driverCache="none")) disk = VirtualDisk(conn=g.conn, path="/dev/loop0", bus="virtio", driverName="qemu", driverType="qcow2", driverCache="none") disk.driver_io = "threads" g.disks.append(disk) self._compare(g, "boot-many-disks2", False)
def testUsb2(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.add_usb_ich9_controllers() self._compare(g, "boot-usb2", False)
def testDoubleInstall(self): # Make sure that installing twice generates the same XML, to ensure # we aren't polluting the device list during the install process i = utils.make_live_installer() g = utils.get_basic_fullyvirt_guest(installer=i) self._compare(g, "install-fullyvirt-livecd", False) self._compare(g, "install-fullyvirt-livecd", False)
def testInstallFVImportMulti(self): i = utils.make_import_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.installer.bootconfig.enable_bootmenu = False g.installer.bootconfig.bootorder = ["hd", "fd", "cdrom", "network"] g.disks.append(utils.get_filedisk()) self._compare(g, "install-fullyvirt-import-multiboot", False)
def make_guest(): g = utils.get_basic_fullyvirt_guest("xen") g.os_type = "windows" g.os_variant = "winxp" g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk()) g.nics.append(utils.get_virtual_network()) g.add_device(VirtualAudio()) return g
def testManyChars(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) dev1 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_SERIAL, VirtualCharDevice.CHAR_NULL) dev2 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_PARALLEL, VirtualCharDevice.CHAR_UNIX) dev2.source_path = "/tmp/foobar" dev3 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_SERIAL, VirtualCharDevice.CHAR_TCP) dev3.protocol = "telnet" dev3.source_host = "my.source.host" dev3.source_port = "1234" dev4 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_PARALLEL, VirtualCharDevice.CHAR_UDP) dev4.bind_host = "my.bind.host" dev4.bind_port = "1111" dev4.source_host = "my.source.host" dev4.source_port = "2222" dev5 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_CHANNEL, VirtualCharDevice.CHAR_PTY) dev5.target_type = dev5.CHAR_CHANNEL_TARGET_VIRTIO dev5.target_name = "foo.bar.frob" dev6 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_CONSOLE, VirtualCharDevice.CHAR_PTY) dev7 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_CONSOLE, VirtualCharDevice.CHAR_PTY) dev7.target_type = dev5.CHAR_CONSOLE_TARGET_VIRTIO dev8 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_CHANNEL, VirtualCharDevice.CHAR_PTY) dev8.target_type = dev5.CHAR_CHANNEL_TARGET_GUESTFWD dev8.target_address = "1.2.3.4" dev8.target_port = "4567" g.add_device(dev1) g.add_device(dev2) g.add_device(dev3) g.add_device(dev4) g.add_device(dev5) g.add_device(dev6) g.add_device(dev7) g.add_device(dev8) self._compare(g, "boot-many-chars", False)
def testBootFVPXEAlways(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.disks.append(utils.get_filedisk()) g.installer.bootconfig.bootorder = [ g.installer.bootconfig.BOOT_DEVICE_NETWORK] g.installer.bootconfig.enable_bootmenu = True self._compare(g, "boot-fullyvirt-pxe-always", False)
def testQEMUDriverName(self): utils.set_conn(_plainkvm) g = utils.get_basic_fullyvirt_guest() g.disks.append(utils.get_blkdisk()) self._compare(g, "misc-qemu-driver-name", True) g = utils.get_basic_fullyvirt_guest() g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk("/iscsi-pool/diskvol1")) self._compare(g, "misc-qemu-driver-type", True) g = utils.get_basic_fullyvirt_guest() g.disks.append(utils.get_filedisk("/default-pool/iso-vol")) self._compare(g, "misc-qemu-iso-disk", True) g = utils.get_basic_fullyvirt_guest() g.disks.append(utils.get_filedisk("/default-pool/iso-vol")) g.disks[0].driver_type = "qcow2" self._compare(g, "misc-qemu-driver-overwrite", True)
def testManySounds(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.sound_devs.append(VirtualAudio("sb16", conn=g.conn)) g.sound_devs.append(VirtualAudio("es1370", conn=g.conn)) g.sound_devs.append(VirtualAudio("pcspk", conn=g.conn)) g.sound_devs.append(VirtualAudio(conn=g.conn)) self._compare(g, "boot-many-sounds", False)
def testInstallFVImportKernel(self): i = utils.make_import_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.disks.append(utils.get_filedisk()) g.installer.bootconfig.kernel = "kernel" g.installer.bootconfig.initrd = "initrd" g.installer.bootconfig.kernel_args = "my kernel args" self._compare(g, "install-fullyvirt-import-kernel", False)
def testF10(self): utils.set_conn(_plainkvm) i = utils.make_pxe_installer(gtype="kvm") g = utils.get_basic_fullyvirt_guest("kvm", installer=i) g.os_type = "linux" g.os_variant = "fedora10" g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk()) g.nics.append(utils.get_virtual_network()) self._compare(g, "install-f10", True)
def testF11Xen(self): utils.set_conn(_plainxen) i = utils.make_distro_installer(gtype="xen") g = utils.get_basic_fullyvirt_guest("xen", installer=i) g.os_type = "linux" g.os_variant = "fedora11" g.installer.cdrom = True g.disks.append(utils.get_floppy()) g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk()) g.nics.append(utils.get_virtual_network()) self._compare(g, "install-f11-xen", False)
def build_guest(): i = utils.make_distro_installer(gtype="kvm") g = utils.get_basic_fullyvirt_guest("kvm", installer=i) g.os_type = "linux" g.os_variant = "fedora11" g.installer.cdrom = True g.disks.append(utils.get_floppy()) g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk()) g.nics.append(utils.get_virtual_network()) g.add_device(VirtualAudio()) return g
def testDefaultDeviceRemoval(self): g = utils.get_basic_fullyvirt_guest() g.disks.append(utils.get_filedisk()) inp = VirtualInputDevice(g.conn) cons = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_CONSOLE, VirtualCharDevice.CHAR_PTY) g.add_device(inp) g.add_device(cons) g.remove_device(inp) g.remove_device(cons) self._compare(g, "boot-default-device-removal", False)
def testManyHostdevs(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) dev1 = VirtualHostDeviceUSB(g.conn) dev1.product = "0x1234" dev1.vendor = "0x4321" dev2 = VirtualHostDevicePCI(g.conn) dev2.bus = "0x11" dev2.slot = "0x2" dev2.function = "0x3" g.hostdevs.append(dev1) g.hostdevs.append(dev2) self._compare(g, "boot-many-hostdevs", False)
def testCpuset(self): normaltest = libvirt.open("test:///default") utils.set_conn(normaltest) g = utils.get_basic_fullyvirt_guest() # Cpuset cpustr = g.generate_cpuset(g.conn, g.memory) g.cpuset = cpustr g.maxvcpus = 7 g.cpu.model = "footest" g.cpu.vendor = "Intel" g.cpu.match = "minimum" g.cpu.threads = "2" g.cpu.sockets = "4" g.cpu.cores = "5" g.cpu.add_feature("x2apic", "force") g.cpu.add_feature("lahf_lm", "forbid") self._compare(g, "boot-cpuset", False) # Test CPU topology determining cpu = virtinst.CPU(g.conn) cpu.sockets = "2" cpu.set_topology_defaults(6) self.assertEquals([cpu.sockets, cpu.cores, cpu.threads], [2, 3, 1]) cpu = virtinst.CPU(g.conn) cpu.cores = "4" cpu.set_topology_defaults(9) self.assertEquals([cpu.sockets, cpu.cores, cpu.threads], [2, 4, 1]) cpu = virtinst.CPU(g.conn) cpu.threads = "3" cpu.set_topology_defaults(14) self.assertEquals([cpu.sockets, cpu.cores, cpu.threads], [4, 1, 3]) cpu = virtinst.CPU(g.conn) cpu.sockets = 5 cpu.cores = 2 self.assertEquals(cpu.vcpus_from_topology(), 10) cpu = virtinst.CPU(g.conn) self.assertEquals(cpu.vcpus_from_topology(), 1)
def testOSDeviceDefaultChange(self): """ Make sure device defaults are properly changed if we change OS distro/variant mid process """ utils.set_conn(_plainkvm) i = utils.make_distro_installer(gtype="kvm") g = utils.get_basic_fullyvirt_guest("kvm", installer=i) do_install = False g.installer.cdrom = True g.disks.append(utils.get_floppy()) g.disks.append(utils.get_filedisk()) g.disks.append(utils.get_blkdisk()) g.nics.append(utils.get_virtual_network()) # Call get_config_xml sets first round of defaults w/o os_variant set g.get_xml_config(do_install) g.os_variant = "fedora11" self._compare(g, "install-f11", do_install)
def testManyNICs(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) net1 = VirtualNetworkInterface(type="user", macaddr="11:11:11:11:11:11") net2 = utils.get_virtual_network() net3 = utils.get_virtual_network() net3.model = "e1000" net4 = VirtualNetworkInterface(bridge="foobr0", macaddr="22:22:22:22:22:22") net4.target_dev = "foo1" net5 = VirtualNetworkInterface(type="ethernet", macaddr="00:11:00:22:00:33") net5.source_dev = "testeth1" g.nics.append(net1) g.nics.append(net2) g.nics.append(net3) g.nics.append(net4) g.nics.append(net5) self._compare(g, "boot-many-nics", False)
def testFullKVMRHEL6(self): utils.set_conn(_plainkvm) i = utils.make_distro_installer( location="tests/cli-test-xml/fakerhel6tree", gtype="kvm") g = utils.get_basic_fullyvirt_guest("kvm", installer=i) g.disks.append(utils.get_floppy()) g.disks.append(utils.get_filedisk("/default-pool/rhel6.img")) g.disks.append(utils.get_blkdisk()) g.nics.append(utils.get_virtual_network()) g.add_device(VirtualAudio()) g.add_device(VirtualVideoDevice(g.conn)) g.os_autodetect = True # Do this ugly hack to make sure the test doesn't try and use vol # upload origscratch = getattr(i, "_get_system_scratchdir") try: setattr(i, "_get_system_scratchdir", lambda: i.scratchdir) self._testInstall(g, "rhel6-kvm-stage1", "rhel6-kvm-stage2") finally: setattr(i, "_get_system_scratchdir", origscratch)
def testDefaultBridge(self): origfunc = None util = None try: i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) util = getattr(virtinst, "_util") origfunc = util.default_bridge2 def newbridge(ignore_conn): return ["bridge", "br0"] util.default_bridge2 = newbridge dev1 = virtinst.VirtualNetworkInterface(conn=g.conn) dev1.macaddr = "11:22:33:44:55:66" g.add_device(dev1) dev2 = virtinst.VirtualNetworkInterface(conn=g.conn, parsexml=dev1.get_xml_config()) dev2.source = None dev2.source = "foobr0" dev2.macaddr = "11:22:33:44:55:67" g.add_device(dev2) dev3 = virtinst.VirtualNetworkInterface(conn=g.conn, parsexml=dev1.get_xml_config()) dev3.source = None dev3.macaddr = "11:22:33:44:55:68" g.add_device(dev3) self._compare(g, "boot-default-bridge", False, do_create=False) dev3.type = dev3.TYPE_USER self._compare(g, None, False) finally: if util and origfunc: util.default_bridge2 = origfunc
def testInstallFVImport(self): i = utils.make_import_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.disks.append(utils.get_filedisk()) self._compare(g, "install-fullyvirt-import", False)
def testInstallFVPXENoDisks(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) self._compare(g, "install-fullyvirt-pxe-nodisks", True)
def testInstallFVLiveCD(self): i = utils.make_live_installer() g = utils.get_basic_fullyvirt_guest(installer=i) self._compare(g, "install-fullyvirt-livecd", False)
def testInstallFullyvirtDiskBlock(self): g = utils.get_basic_fullyvirt_guest() g.disks.append(utils.get_blkdisk()) self._compare(g, "install-fullyvirt-disk-block", True)
def testManyDevices(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.description = "foooo barrrr somedesc" g.hugepage = True # Hostdevs dev1 = VirtualHostDeviceUSB(g.conn) dev1.product = "0x1234" dev1.vendor = "0x4321" g.hostdevs.append(dev1) # Sound devices g.sound_devs.append(VirtualAudio("sb16", conn=g.conn)) g.sound_devs.append(VirtualAudio("es1370", conn=g.conn)) # Disk devices g.disks.append(VirtualDisk(conn=g.conn, path="/dev/loop0", device=VirtualDisk.DEVICE_FLOPPY)) g.disks.append(VirtualDisk(conn=g.conn, path="/dev/loop0", bus="scsi")) g.disks.append(VirtualDisk(conn=g.conn, path="/tmp", device="floppy")) d3 = VirtualDisk(conn=g.conn, path="/default-pool/testvol1.img", bus="scsi", driverName="qemu") g.disks.append(d3) # Controller devices c1 = VirtualController.get_class_for_type(VirtualController.CONTROLLER_TYPE_IDE)(g.conn) c1.index = "3" c2 = VirtualController.get_class_for_type(VirtualController.CONTROLLER_TYPE_VIRTIOSERIAL)(g.conn) c2.ports = "32" c2.vectors = "17" g.add_device(c1) g.add_device(c2) # Network devices net1 = utils.get_virtual_network() net1.model = "e1000" net2 = VirtualNetworkInterface(type="user", macaddr="11:11:11:11:11:11") g.nics.append(net1) g.nics.append(net2) # Character devices cdev1 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_SERIAL, VirtualCharDevice.CHAR_NULL) cdev2 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_PARALLEL, VirtualCharDevice.CHAR_UNIX) cdev2.source_path = "/tmp/foobar" cdev3 = VirtualCharDevice.get_dev_instance(g.conn, VirtualCharDevice.DEV_CHANNEL, VirtualCharDevice.CHAR_SPICEVMC) g.add_device(cdev1) g.add_device(cdev2) g.add_device(cdev3) # Video Devices vdev1 = VirtualVideoDevice(g.conn) vdev1.model_type = "vmvga" vdev2 = VirtualVideoDevice(g.conn) vdev2.model_type = "cirrus" vdev2.vram = 10 * 1024 vdev2.heads = 3 vdev3 = VirtualVideoDevice(g.conn) vdev4 = VirtualVideoDevice(g.conn) vdev4.model_type = "qxl" g.add_device(vdev1) g.add_device(vdev2) g.add_device(vdev3) g.add_device(vdev4) wdev2 = VirtualWatchdog(g.conn) wdev2.model = "ib700" wdev2.action = "none" g.add_device(wdev2) # Check keymap autoconfig gdev1 = virtinst.VirtualGraphics(conn=g.conn, type="vnc") self.assertTrue(gdev1.keymap != None) gdev1.keymap = "en-us" # Check keymap None gdev2 = virtinst.VirtualGraphics(conn=g.conn, type="vnc") gdev2.keymap = None gdev3 = virtinst.VirtualGraphics(conn=g.conn, type="sdl") gdev4 = virtinst.VirtualGraphics(conn=g.conn, type="spice") gdev5 = virtinst.VirtualGraphics(conn=g.conn, type="sdl") gdev5.xauth = "fooxauth" gdev5.display = "foodisplay" g.add_device(gdev1) g.add_device(gdev2) g.add_device(gdev3) g.add_device(gdev4) g.add_device(gdev5) g.clock.offset = "localtime" g.seclabel.type = g.seclabel.SECLABEL_TYPE_STATIC g.seclabel.model = "selinux" g.seclabel.label = "foolabel" g.seclabel.imagelabel = "imagelabel" self._compare(g, "boot-many-devices", False)
def testInstallFVPXE(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.disks.append(utils.get_filedisk()) self._compare(g, "install-fullyvirt-pxe", True)
def testBootFVPXENoDisks(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) self._compare(g, "boot-fullyvirt-pxe-nodisks", False)
def testXMLEscaping(self): g = utils.get_basic_fullyvirt_guest() g.description = "foooo barrrr \n baz && snarf. '' \"\" @@$\n" g.disks.append(utils.get_filedisk("/tmp/ISO&'&s")) self._compare(g, "misc-xml-escaping", True)
def testBootFVPXE(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.disks.append(utils.get_filedisk()) self._compare(g, "boot-fullyvirt-pxe", False)