def test_overwrite_existing_data(self): test_xml = u'''<?xml version="1.0" encoding="utf-8"?> <domain type="kvm" xmlns:ovirt-vm="http://ovirt.org/vm/1.0"> <uuid>68c1f97c-9336-4e7a-a8a9-b4f052ababf1</uuid> <metadata> <ovirt-vm:vm> <ovirt-vm:device mac_address='00:1a:4a:16:20:30'> <ovirt-vm:custom> <ovirt-vm:vnic_id>da688238-8b79-4a5f-9f0e-0b207463ff1f</ovirt-vm:vnic_id> <ovirt-vm:provider_type>EXTERNAL_NETWORK</ovirt-vm:provider_type> </ovirt-vm:custom> </ovirt-vm:device> </ovirt-vm:vm> </metadata> </domain>''' md_desc = metadata.Descriptor.from_xml(test_xml) nic_params = { 'device': hwclass.NIC, 'macAddr': '00:1a:4a:16:20:30', 'network': 'test', } expected_xml = """<ovirt-vm:vm xmlns:ovirt-vm="http://ovirt.org/vm/1.0"> <ovirt-vm:device mac_address="00:1a:4a:16:20:30"> <ovirt-vm:network>test</ovirt-vm:network> </ovirt-vm:device> </ovirt-vm:vm>""" dev_map = common.empty_dev_map() dev_map[hwclass.NIC].append(network.Interface(self.log, **nic_params)) common.save_device_metadata(md_desc, dev_map, self.log) self.assertXMLEqual(md_desc.to_xml(), expected_xml)
def test_devices_storage(self): drive_params = { 'device': hwclass.DISK, 'iface': 'sata', 'index': 0, # *ID are not validated by the Drive class 'shared': 'transient', 'domainID': 'domainID', 'imageID': 'imageID', 'poolID': 'poolID', 'volumeID': 'volumeID', } expected_xml = """<ovirt-vm:vm xmlns:ovirt-vm="http://ovirt.org/vm/1.0"> <ovirt-vm:device devtype="disk" name="sda"> <ovirt-vm:domainID>domainID</ovirt-vm:domainID> <ovirt-vm:imageID>imageID</ovirt-vm:imageID> <ovirt-vm:poolID>poolID</ovirt-vm:poolID> <ovirt-vm:shared>transient</ovirt-vm:shared> <ovirt-vm:volumeID>volumeID</ovirt-vm:volumeID> </ovirt-vm:device> </ovirt-vm:vm>""" dev_map = common.empty_dev_map() dev_map[hwclass.DISK].append(storage.Drive(self.log, **drive_params)) common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), expected_xml)
def test_device_no_metadata(self): dev_map = common.empty_dev_map() dev_map[hwclass.LEASE].append( lease.Device(self.log, lease_id='l', sd_id='s', path='p', offset='0')) common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), self.EMPTY_XML)
def test_devices_storage_iotune(self): drive_params = { 'index': 0, 'cache': 'none', 'name': 'vda', 'format': 'raw', 'bootOrder': '1', 'discard': False, 'diskType': 'block', 'specParams': { 'ioTune': { 'write_bytes_sec': 0, 'total_iops_sec': 0, 'read_iops_sec': 100, 'read_bytes_sec': 0, 'write_iops_sec': 100, 'total_bytes_sec': 0 } }, 'iface': 'virtio', 'device': 'disk', 'path': '/some/path', 'serial': 'random-serial', 'propagateErrors': 'off', 'type': 'disk', # *ID are not validated by the Drive class 'shared': 'transient', 'domainID': 'domainID', 'imageID': 'imageID', 'poolID': 'poolID', 'volumeID': 'volumeID', } expected_xml = """<ovirt-vm:vm xmlns:ovirt-vm="http://ovirt.org/vm/1.0"> <ovirt-vm:device devtype="disk" name="vda"> <ovirt-vm:domainID>domainID</ovirt-vm:domainID> <ovirt-vm:imageID>imageID</ovirt-vm:imageID> <ovirt-vm:managed type="bool">False</ovirt-vm:managed> <ovirt-vm:poolID>poolID</ovirt-vm:poolID> <ovirt-vm:shared>transient</ovirt-vm:shared> <ovirt-vm:volumeID>volumeID</ovirt-vm:volumeID> <ovirt-vm:specParams /> </ovirt-vm:device> </ovirt-vm:vm>""" dev_map = common.empty_dev_map() dev_map[hwclass.DISK].append(storage.Drive(self.log, **drive_params)) common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), expected_xml)
def test_devices_network(self): nic_params = { 'device': hwclass.NIC, 'macAddr': '00:00:00:00:00:00', 'network': 'test', 'portMirroring': ['net1', 'net2'], } expected_xml = """<ovirt-vm:vm xmlns:ovirt-vm="http://ovirt.org/vm/1.0"> <ovirt-vm:device mac_address="00:00:00:00:00:00"> <ovirt-vm:network>test</ovirt-vm:network> <ovirt-vm:portMirroring> <ovirt-vm:network>net1</ovirt-vm:network> <ovirt-vm:network>net2</ovirt-vm:network> </ovirt-vm:portMirroring> </ovirt-vm:device> </ovirt-vm:vm>""" dev_map = common.empty_dev_map() dev_map[hwclass.NIC].append(network.Interface(self.log, **nic_params)) common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), expected_xml)
def test_disk_specParams_payload_device(self): payload_params = { u'index': u'3', u'iface': u'ide', u'specParams': { u'vmPayload': { u'volId': u'config-2', u'file': { u'openstack/content/0000': u'A', u'openstack/latest/meta_data.json': u'B', u'openstack/latest/user_data': u'C', } } }, u'readonly': u'true', u'deviceId': u'e5cd57aa-6eb6-424b-b16b-83ef07bf9cca', u'shared': u'false', u'device': u'cdrom', u'path': u'', u'type': u'disk' } expected_xml = """<ovirt-vm:vm xmlns:ovirt-vm="http://ovirt.org/vm/1.0"> <ovirt-vm:device name="hdd" devtype="disk"> <ovirt-vm:deviceId>e5cd57aa-6eb6-424b-b16b-83ef07bf9cca</ovirt-vm:deviceId> <ovirt-vm:managed type="bool">False</ovirt-vm:managed> <ovirt-vm:shared>false</ovirt-vm:shared> <ovirt-vm:specParams> <ovirt-vm:vmPayload> <ovirt-vm:volId>config-2</ovirt-vm:volId> <ovirt-vm:file path='openstack/content/0000'>A</ovirt-vm:file> <ovirt-vm:file path='openstack/latest/meta_data.json'>B</ovirt-vm:file> <ovirt-vm:file path='openstack/latest/user_data'>C</ovirt-vm:file> </ovirt-vm:vmPayload> </ovirt-vm:specParams> </ovirt-vm:device> </ovirt-vm:vm>""" dev_map = common.empty_dev_map() dev_map[hwclass.DISK].append(storage.Drive(self.log, **payload_params)) common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), expected_xml)
def test_device_no_metadata(self): dev_map = common.empty_dev_map() dev_map[hwclass.SOUND].append(core.Sound(self.log)) common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), self.EMPTY_XML)
def test_no_devices(self): dev_map = common.empty_dev_map() common.save_device_metadata(self.md_desc, dev_map, self.log) self.assertXMLEqual(self.md_desc.to_xml(), self.EMPTY_XML)