def process_networks(domain, guest, profile_data, bridge): # Create a bridge or default network for every requested nic. If there are more # bridges then nics discard the last one. domain.interface = int(profile_data["network_count"]) bridges = [] #use the provided bridge first guest_bridge = bridge if guest_bridge is None: guest_bridge = profile_data["virt_bridge"] # Look for commas if (guest_bridge is not None) and (len(guest_bridge.strip()) > 0): if guest_bridge.find(",") == -1: bridges.append(guest_bridge) else: bridges == guest_bridge.split(",") for cnt in range(0, domain.interface): if cnt < len(bridges): nic = VirtualNetworkInterface(random_mac(), type="bridge", bridge=bridges[cnt]) #dev api #nic = VirtualNetworkInterface(random_mac(), type="bridge", bridge = bridge, conn=guest.conn) else: default_network = virtinst.util.default_network() #dev api #default_network = virtinst.util.default_network(guest.conn) nic = VirtualNetworkInterface(random_mac(), type=default_network[0], network=default_network[1]) guest.nics.append(nic)
def generate_macaddr(conn): newmac = "" try: net = VirtualNetworkInterface(conn=conn.vmm) net.setup(conn.vmm) newmac = net.macaddr except: pass return newmac
def testManyNICs(self): i = make_pxe_installer() g = get_basic_fullyvirt_guest(installer=i) net1 = VirtualNetworkInterface(type="user", macaddr="11:11:11:11:11:11") net2 = get_virtual_network() net3 = get_virtual_network() net3.model = "e1000" net4 = VirtualNetworkInterface(bridge="foobr0", macaddr="22:22:22:22:22:22") g.nics.append(net1) g.nics.append(net2) g.nics.append(net3) g.nics.append(net4) self._compare(g, "boot-many-nics", False)
def change_mac_finish(self, ignore): orig = self.widget("change-mac-orig").get_text() new = self.widget("change-mac-new").get_text() row = self.net_list[orig] try: VirtualNetworkInterface(conn=self.conn.vmm, type=VirtualNetworkInterface.TYPE_USER, macaddr=new) row[NETWORK_INFO_NEW_MAC] = new except Exception, e: self.err.show_err(_("Error changing MAC address: %s") % str(e)) return
def change_mac_finish(self, ignore): orig = self.widget("change-mac-orig").get_text() new = self.widget("change-mac-new").get_text() row = self.net_list[orig] try: ignore, msg = VirtualNetworkInterface.is_conflict_net( self.conn.get_backend(), new) if msg: raise RuntimeError(msg) row[NETWORK_INFO_NEW_MAC] = new except Exception, e: self.err.show_err(_("Error changing MAC address: %s") % str(e)) return
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 populate_network_list(self): net_box = self.widget("clone-network-box") for c in net_box.get_children(): net_box.remove(c) c.destroy() self.net_list = {} self.mac_list = [] def build_net_row(labelstr, origmac, newmac): label = Gtk.Label(label=labelstr + " (%s)" % origmac) label.set_alignment(0, .5) button = Gtk.Button(_("Details...")) button.connect("clicked", self.net_change_mac, origmac) hbox = Gtk.HBox() hbox.set_spacing(12) hbox.pack_start(label, True, True, 0) hbox.pack_end(button, False, False, False) hbox.show_all() net_box.pack_start(hbox, False, False, False) net_row = [] net_row.insert(NETWORK_INFO_LABEL, labelstr) net_row.insert(NETWORK_INFO_ORIG_MAC, origmac) net_row.insert(NETWORK_INFO_NEW_MAC, newmac) self.net_list[origmac] = net_row self.mac_list.append(origmac) for net in self.orig_vm.get_network_devices(): mac = net.macaddr net_dev = net.source net_type = net.type # Generate a new MAC newmac = VirtualNetworkInterface.generate_mac( self.conn.get_backend()) # [ interface type, device name, origmac, newmac, label ] if net_type == VirtualNetworkInterface.TYPE_USER: label = _("Usermode") elif net_type == VirtualNetworkInterface.TYPE_VIRTUAL: net = None for netobj in self.orig_vm.conn.list_nets(): if netobj.get_name() == net_dev: net = netobj break if net: label = "" desc = net.pretty_forward_mode() label += "%s" % desc else: label = (_("Virtual Network") + (net_dev and " %s" % net_dev or "")) else: # 'bridge' or anything else label = (net_type.capitalize() + (net_dev and (" %s" % net_dev) or "")) build_net_row(label, mac, newmac) no_net = bool(len(self.net_list.keys()) == 0) self.widget("clone-network-box").set_visible(not no_net) self.widget("clone-no-net").set_visible(no_net)
def populate_network_list(self): net_box = self.widget("clone-network-box") for c in net_box.get_children(): net_box.remove(c) c.destroy() self.net_list = {} self.mac_list = [] def build_net_row(labelstr, origmac, newmac): label = Gtk.Label(label=labelstr + " (%s)" % origmac) label.set_alignment(0, .5) button = Gtk.Button(_("Details...")) button.connect("clicked", self.net_change_mac, origmac) hbox = Gtk.HBox() hbox.set_spacing(12) hbox.pack_start(label, True, True, 0) hbox.pack_end(button, False, False, False) hbox.show_all() net_box.pack_start(hbox, False, False, False) net_row = [] net_row.insert(NETWORK_INFO_LABEL, labelstr) net_row.insert(NETWORK_INFO_ORIG_MAC, origmac) net_row.insert(NETWORK_INFO_NEW_MAC, newmac) self.net_list[origmac] = net_row self.mac_list.append(origmac) for net in self.vm.get_network_devices(): mac = net.macaddr net_dev = net.source net_type = net.type # Generate a new MAC newmac = VirtualNetworkInterface.generate_mac( self.conn.get_backend()) # [ interface type, device name, origmac, newmac, label ] if net_type == VirtualNetworkInterface.TYPE_USER: label = _("Usermode") elif net_type == VirtualNetworkInterface.TYPE_VIRTUAL: net = None for netobj in self.vm.conn.list_nets(): if netobj.get_name() == net_dev: net = netobj break if net: label = "" desc = net.pretty_forward_mode() label += "%s" % desc else: label = (_("Virtual Network") + (net_dev and " %s" % net_dev or "")) else: # 'bridge' or anything else label = (net_type.capitalize() + (net_dev and (" %s" % net_dev) or "")) build_net_row(label, mac, newmac) no_net = (not list(self.net_list.keys())) self.widget("clone-network-box").set_visible(not no_net) self.widget("clone-no-net").set_visible(no_net)
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 get_network(net_kwargs, guest): n = VirtualNetworkInterface(**net_kwargs) guest.nics.append(n)
# Create network device try: bridge = None netname = None if nettype == VirtualNetworkInterface.TYPE_VIRTUAL: netname = devname elif nettype == VirtualNetworkInterface.TYPE_BRIDGE: bridge = devname elif nettype == VirtualNetworkInterface.TYPE_DIRECT: bridge = devname elif nettype == VirtualNetworkInterface.TYPE_USER: pass net = VirtualNetworkInterface(conn=conn.vmm, type=nettype, bridge=bridge, network=netname, macaddr=macaddr, model=model) if net.model == "spapr-vlan": addr = "spapr-vio" net.set_address(addr) except Exception, e: return err_dial.val_err(_("Error with network parameters."), e) # Make sure there is no mac address collision isfatal, errmsg = net.is_conflict_net(conn.vmm) if isfatal: return err_dial.val_err(_("Mac address collision."), errmsg) elif errmsg is not None:
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 = VirtualHostDevice(g.conn) dev1.type = "usb" dev1.vendor = "0x4321" dev1.product = "0x1234" g.add_device(dev1) # Sound devices d = VirtualAudio(g.conn) d.model = "sb16" g.add_device(d) d = VirtualAudio(g.conn) d.model = "es1370" g.add_device(d) # Disk devices d = VirtualDisk(g.conn) d.path = "/dev/loop0" d.device = d.DEVICE_FLOPPY d.validate() g.add_device(d) d = VirtualDisk(g.conn) d.path = "/dev/loop0" d.bus = "scsi" d.validate() g.add_device(d) d = VirtualDisk(g.conn) d.path = "/tmp" d.device = d.DEVICE_FLOPPY d.validate() g.add_device(d) d = VirtualDisk(g.conn) d.path = "/dev/default-pool/testvol1.img" d.bus = "scsi" d.driver_name = "qemu" d.address.type = "spapr-vio" d.validate() g.add_device(d) # Controller devices c1 = VirtualController(g.conn) c1.type = "ide" c1.index = "3" c2 = VirtualController(g.conn) c2.type = "virtio-serial" 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(g.conn) net2.type = "user" net2.macaddr = "22:11:11:11:11:11" net3 = VirtualNetworkInterface(g.conn) net3.type = virtinst.VirtualNetworkInterface.TYPE_VIRTUAL net3.macaddr = "22:22:22:22:22:22" net3.network = "default" net3.model = "spapr-vlan" net3.address.set_addrstr("spapr-vio") g.add_device(net1) g.add_device(net2) g.add_device(net3) # Character devices cdev1 = VirtualSerialDevice(g.conn) cdev1.type = "null" cdev2 = VirtualParallelDevice(g.conn) cdev2.type = "unix" cdev2.source_path = "/tmp/foobar" cdev3 = VirtualChannelDevice(g.conn) cdev3.type = "spicevmc" g.add_device(cdev1) g.add_device(cdev2) g.add_device(cdev3) # Video Devices vdev1 = VirtualVideoDevice(g.conn) vdev1.model = "vmvga" vdev2 = VirtualVideoDevice(g.conn) vdev2.model = "cirrus" vdev2.vram = 10 * 1024 vdev2.heads = 3 vdev3 = VirtualVideoDevice(g.conn) vdev4 = VirtualVideoDevice(g.conn) vdev4.model = "qxl" g.add_device(vdev1) g.add_device(vdev2) g.add_device(vdev3) g.add_device(vdev4) # Watchdog Devices wdev2 = VirtualWatchdog(g.conn) wdev2.model = "ib700" wdev2.action = "none" g.add_device(wdev2) # Memballoon Devices mdev1 = VirtualMemballoon(g.conn) mdev1.model = "virtio" g.add_device(mdev1) # Check keymap autoconfig gdev1 = virtinst.VirtualGraphics(g.conn) gdev1.type = "vnc" self.assertTrue(gdev1.keymap is not None) gdev1.keymap = "en-us" # Check keymap None gdev2 = virtinst.VirtualGraphics(g.conn) gdev2.type = "vnc" gdev2.keymap = None gdev3 = virtinst.VirtualGraphics(g.conn) gdev3.type = "sdl" gdev4 = virtinst.VirtualGraphics(g.conn) gdev4.type = "spice" gdev4.passwdValidTo = "foobar" gdev5 = virtinst.VirtualGraphics(g.conn) gdev5.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.TYPE_STATIC g.seclabel.model = "selinux" g.seclabel.label = "foolabel" g.seclabel.imagelabel = "imagelabel" redir1 = virtinst.VirtualRedirDevice(g.conn) redir1.type = "spicevmc" redir2 = virtinst.VirtualRedirDevice(g.conn) redir2.type = "tcp" redir2.parse_friendly_server("foobar.com:1234") g.add_device(redir1) g.add_device(redir2) self._compare(g, "boot-many-devices", False)
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.add_device(dev1) # Sound devices g.add_device(VirtualAudio("sb16", conn=g.conn)) g.add_device(VirtualAudio("es1370", conn=g.conn)) # Disk devices g.add_device(VirtualDisk(conn=g.conn, path="/dev/loop0", device=VirtualDisk.DEVICE_FLOPPY)) g.add_device(VirtualDisk(conn=g.conn, path="/dev/loop0", bus="scsi")) g.add_device(VirtualDisk(conn=g.conn, path="/tmp", device="floppy")) d3 = VirtualDisk(conn=g.conn, path="/default-pool/testvol1.img", bus="scsi", driverName="qemu") d3.address.type = "spapr-vio" g.add_device(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="22:11:11:11:11:11") net3 = VirtualNetworkInterface(type=virtinst.VirtualNetworkInterface.TYPE_VIRTUAL, macaddr="22:22:22:22:22:22", network="default") net3.model = "spapr-vlan" net3.set_address("spapr-vio") g.add_device(net1) g.add_device(net2) g.add_device(net3) # 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) # Watchdog Devices wdev2 = VirtualWatchdog(g.conn) wdev2.model = "ib700" wdev2.action = "none" g.add_device(wdev2) # Memballoon Devices mdev1 = VirtualMemballoon(g.conn) mdev1.model = "virtio" g.add_device(mdev1) # Check keymap autoconfig gdev1 = virtinst.VirtualGraphics(conn=g.conn, type="vnc") self.assertTrue(gdev1.keymap is not 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") gdev4.passwdValidTo = "foobar" 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 testManyDevices(self): i = make_pxe_installer() g = get_basic_fullyvirt_guest(installer=i) g.description = "foooo barrrr \n baz && snarf. '' \"\" @@$\n" # 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 = 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" g.add_device(cdev1) g.add_device(cdev2) # 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) g.add_device(vdev1) g.add_device(vdev2) g.add_device(vdev3) wdev2 = VirtualWatchdog(g.conn) wdev2.model = "ib700" wdev2.action = "none" g.add_device(wdev2) g.clock.offset = "localtime" seclabel = virtinst.Seclabel(g.conn) seclabel.type = seclabel.SECLABEL_TYPE_STATIC seclabel.model = "selinux" seclabel.label = "foolabel" seclabel.imagelabel = "imagelabel" g.seclabel = seclabel self._compare(g, "boot-many-devices", False)
def testManyDevices(self): i = utils.make_pxe_installer() g = utils.get_basic_fullyvirt_guest(installer=i) g.description = "foooo barrrr somedesc" g.memoryBacking.hugepages = True # Hostdevs dev1 = VirtualHostDevice(g.conn) dev1.type = "usb" dev1.vendor = "0x4321" dev1.product = "0x1234" g.add_device(dev1) # Sound devices d = VirtualAudio(g.conn) d.model = "sb16" g.add_device(d) d = VirtualAudio(g.conn) d.model = "es1370" g.add_device(d) # Disk devices d = VirtualDisk(g.conn) d.type = "block" d.path = "/dev/null" d.device = d.DEVICE_FLOPPY d.validate() g.add_device(d) d = VirtualDisk(g.conn) d.type = "block" d.path = "/dev/null" d.bus = "scsi" d.validate() g.add_device(d) d = VirtualDisk(g.conn) d.path = "/tmp" d.device = d.DEVICE_FLOPPY d.validate() g.add_device(d) d = VirtualDisk(g.conn) d.path = "/dev/default-pool/testvol1.img" d.bus = "scsi" d.driver_name = "qemu" d.address.type = "spapr-vio" d.validate() g.add_device(d) # Controller devices c1 = VirtualController(g.conn) c1.type = "ide" c1.index = "3" c2 = VirtualController(g.conn) c2.type = "virtio-serial" 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(g.conn) net2.type = "user" net2.macaddr = "22:11:11:11:11:11" net3 = VirtualNetworkInterface(g.conn) net3.type = virtinst.VirtualNetworkInterface.TYPE_VIRTUAL net3.macaddr = "22:22:22:22:22:22" net3.source = "default" net3.model = "spapr-vlan" net3.address.set_addrstr("spapr-vio") g.add_device(net1) g.add_device(net2) g.add_device(net3) # Character devices cdev1 = VirtualSerialDevice(g.conn) cdev1.type = "null" cdev2 = VirtualParallelDevice(g.conn) cdev2.type = "unix" cdev2.source_path = "/dev/default-pool/foobar" cdev3 = VirtualChannelDevice(g.conn) cdev3.type = "spicevmc" g.add_device(cdev1) g.add_device(cdev2) g.add_device(cdev3) # Video Devices vdev1 = VirtualVideoDevice(g.conn) vdev1.model = "vmvga" vdev2 = VirtualVideoDevice(g.conn) vdev2.model = "cirrus" vdev2.vram = 10 * 1024 vdev2.heads = 3 vdev3 = VirtualVideoDevice(g.conn) vdev4 = VirtualVideoDevice(g.conn) vdev4.model = "qxl" g.add_device(vdev1) g.add_device(vdev2) g.add_device(vdev3) g.add_device(vdev4) # Watchdog Devices wdev2 = VirtualWatchdog(g.conn) wdev2.model = "ib700" wdev2.action = "none" g.add_device(wdev2) # Memballoon Devices mdev1 = VirtualMemballoon(g.conn) mdev1.model = "virtio" g.add_device(mdev1) # Check keymap autoconfig gdev1 = virtinst.VirtualGraphics(g.conn) gdev1.type = "vnc" self.assertTrue(gdev1.keymap is not None) gdev1.keymap = "en-us" # Check keymap None gdev2 = virtinst.VirtualGraphics(g.conn) gdev2.type = "vnc" gdev2.keymap = None gdev3 = virtinst.VirtualGraphics(g.conn) gdev3.type = "sdl" gdev3.xauth = "/dev/default-pool/.Xauthority" gdev3.display = ":3.4" gdev4 = virtinst.VirtualGraphics(g.conn) gdev4.type = "spice" gdev4.passwdValidTo = "foobar" gdev5 = virtinst.VirtualGraphics(g.conn) gdev5.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.TYPE_STATIC g.seclabel.model = "selinux" g.seclabel.label = "foolabel" g.seclabel.imagelabel = "imagelabel" redir1 = virtinst.VirtualRedirDevice(g.conn) redir1.type = "spicevmc" redir2 = virtinst.VirtualRedirDevice(g.conn) redir2.type = "tcp" redir2.parse_friendly_server("foobar.com:1234") g.add_device(redir1) g.add_device(redir2) # Panic Notifier device pdev = VirtualPanicDevice(g.conn) g.add_device(pdev) self._compare(g, "boot-many-devices", False)