def test_edit(self): self.domain = d = Data_Domain() d.domain_type = 'kvm' d.uuid = 'da33829a-4c56-4626-8d33-beec0580fc10' d.name = 'ucs401' d.annotations = { 'description': 'https://forge.univention.org/bugzilla/show_bug.cgi?id=36640' } d.os_type = 'hvm' d.arch = 'x86_64' d.boot = ['cdrom', 'hd'] d.maxMem = 1048576 << 10 # KiB d.vcpus = 1 d.rtc_offset = 'utc' disk = Disk() disk.type = Disk.TYPE_FILE disk.device = Disk.DEVICE_DISK disk.driver = 'qemu' disk.driver_type = 'qcow2' disk.driver_cache = 'none' disk.source = "/var/lib/libvirt/images/ucs401-0.qcow2" disk.target_dev = 'vda' disk.target_bus = 'virtio' d.disks.append(disk) disk = Disk() disk.type = Disk.TYPE_FILE disk.device = Disk.DEVICE_CDROM disk.driver = 'qemu' disk.driver_type = 'raw' disk.source = "/var/univention/buildsystem2/isotests/ucs_4.0-1-latest-amd64.iso" disk.readonly = True disk.target_dev = 'hda' disk.target_bus = 'ide' d.disks.append(disk) interface = Interface() interface.type = Interface.TYPE_BRIDGE interface.mac_address = "52:54:00:71:90:4b" interface.source = 'br0' interface.model = 'virtio' d.interfaces.append(interface) graphic = Graphic() graphic.type = Graphic.TYPE_VNC graphic.listen = '0.0.0.0' d.graphics.append(graphic) xml, update_xml = _domain_edit(self, d, xml=None) self.assertXmlEqual(self.xml, xml)
def test_new(self): self.domain = d = Data_Domain() # d.domain_type = 'kvm' d.name = 'ucs401' # d.os_type = 'hvm' # d.arch = 'x86_64' # d.boot = ['cdrom', 'hd'] # d.maxMem = 1048576 << 10 # KiB d.vcpus = 1 # d.rtc_offset = 'utc' disk = Disk() disk.type = Disk.TYPE_FILE disk.device = Disk.DEVICE_DISK # disk.driver = 'qemu' # disk.driver_type = 'qcow2' # disk.driver_cache = 'none' disk.source = "/var/lib/libvirt/images/ucs401-0.qcow2" # disk.target_dev = 'vda' # disk.target_bus = 'virtio' d.disks.append(disk) disk = Disk() disk.type = Disk.TYPE_FILE disk.device = Disk.DEVICE_CDROM # disk.driver = 'qemu' # disk.driver_type = 'raw' disk.source = "/var/univention/buildsystem2/isotests/ucs_4.0-1-latest-amd64.iso" disk.readonly = True # disk.target_dev = 'hda' # disk.target_bus = 'ide' d.disks.append(disk) interface = Interface() interface.type = Interface.TYPE_BRIDGE # interface.source = 'br0' # interface.model = 'virtio' d.interfaces.append(interface) graphic = Graphic() graphic.type = Graphic.TYPE_VNC # graphic.listen = '0.0.0.0' d.graphics.append(graphic) xml, update_xml = _domain_edit(self, d, xml=None) self.assertXmlEqual(self.xml, xml)
def _create_disk(self, node_uri, disk, domain_info, profile=None): """ Convert single disk from JSON to Python UVMM Disk object. """ uri = urlsplit(node_uri) driver_pv = disk.get('paravirtual', False) # by default no paravirtual devices drive = Disk() drive.device = disk['device'] drive.driver_type = disk['driver_type'] drive.driver_cache = disk.get('driver_cache', 'default') drive.driver = disk.get('driver', None) drive.target_bus = disk.get('target_bus', 'ide') drive.target_dev = disk.get('target_dev', None) pool_name = disk.get('pool') if pool_name: pool = self.get_pool(node_uri, pool_name) else: pool = {} if disk.get('source', None) is None: # new drive drive.size = disk['size'] if not pool: raise ValueError('Pool "%s" not found' % (pool_name, )) drive.source = os.path.join(pool['path'], disk['volumeFilename']) if profile: if drive.device == Disk.DEVICE_DISK: driver_pv = getattr(profile, 'pvdisk', False) elif drive.device == Disk.DEVICE_CDROM: driver_pv = getattr(profile, 'pvcdrom', False) else: # old drive drive.source = disk['source'] MODULE.info('Creating a %s drive' % ('paravirtual' if driver_pv else 'emulated', )) try: pool_type = pool['type'] drive.type = POOLS_TYPE[pool_type] except LookupError: if drive.source.startswith('/dev/'): drive.type = Disk.TYPE_BLOCK elif not drive.source: # empty CDROM or floppy device drive.type = Disk.TYPE_BLOCK else: drive.type = Disk.TYPE_FILE if drive.device == Disk.DEVICE_DISK: drive.readonly = disk.get('readonly', False) elif drive.device == Disk.DEVICE_CDROM: drive.driver_type = 'raw' # ISOs need driver/@type='raw' drive.readonly = disk.get('readonly', True) elif drive.device == Disk.DEVICE_FLOPPY: drive.readonly = disk.get('readonly', True) else: raise ValueError('Invalid drive-type "%s"' % drive.device) if uri.scheme.startswith('qemu'): drive.driver = 'qemu' if drive.device == Disk.DEVICE_FLOPPY: drive.target_bus = 'fdc' elif driver_pv: drive.target_bus = 'virtio' elif disk.get('paravirtual', None) is False: drive.target_bus = 'ide' else: pass # keep else: raise ValueError('Unknown virt-tech "%s"' % (node_uri, )) return drive