Esempio n. 1
0
    def test_libvirt_volume_driver_readonly(self):
        libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                "device_path": "/foo",
                'access_mode': 'bar',
            },
        }
        disk_info = {
            "bus": "virtio",
            "dev": "vde",
            "type": "disk",
        }
        self.assertRaises(exception.InvalidVolumeAccessMode,
                          libvirt_driver.get_config, connection_info,
                          self.disk_info)

        connection_info['data']['access_mode'] = 'rw'
        conf = libvirt_driver.get_config(connection_info, disk_info)
        tree = conf.format_dom()
        readonly = tree.find('./readonly')
        self.assertIsNone(readonly)

        connection_info['data']['access_mode'] = 'ro'
        conf = libvirt_driver.get_config(connection_info, disk_info)
        tree = conf.format_dom()
        readonly = tree.find('./readonly')
        self.assertIsNotNone(readonly)
Esempio n. 2
0
    def test_libvirt_volume_multiattach(self):
        libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                "device_path": "/foo",
                'access_mode': 'rw',
            },
            'multiattach': True,
        }
        disk_info = {
            "bus": "virtio",
            "dev": "vde",
            "type": "disk",
        }

        conf = libvirt_driver.get_config(connection_info, disk_info)
        tree = conf.format_dom()
        shareable = tree.find('./shareable')
        self.assertIsNotNone(shareable)

        connection_info['multiattach'] = False
        conf = libvirt_driver.get_config(connection_info, disk_info)
        tree = conf.format_dom()
        shareable = tree.find('./shareable')
        self.assertIsNone(shareable)
Esempio n. 3
0
 def _test_libvirt_volume_driver_disk_info(self):
     libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
     connection_info = {
         'driver_volume_type': 'fake',
         'data': {
             'device_path': '/foo',
         },
         'serial': 'fake_serial',
     }
     conf = libvirt_driver.get_config(connection_info, self.disk_info)
     tree = conf.format_dom()
     self._assertDiskInfoEquals(tree, self.disk_info)
Esempio n. 4
0
 def test_libvirt_volume_driver_serial(self):
     libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn)
     connection_info = {
         'driver_volume_type': 'fake',
         'data': {
             'device_path': '/foo',
         },
         'serial': 'fake_serial',
     }
     conf = libvirt_driver.get_config(connection_info, self.disk_info)
     tree = conf.format_dom()
     self.assertEqual('block', tree.get('type'))
     self.assertEqual('fake_serial', tree.find('./serial').text)
     self.assertIsNone(tree.find('./blockio'))
Esempio n. 5
0
    def test_libvirt_volume_driver_discard_false(self):
        # Check the discard attrib is not present in driver section
        libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                'device_path': '/foo',
                'discard': False,
            },
            'serial': 'fake_serial',
        }

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self.assertIsNone(tree.find("driver[@discard]"))
Esempio n. 6
0
 def test_libvirt_volume_driver_address_tag_scsi_unit(self, disk_unit):
     # The address tag should be set if bus is scsi and unit is set.
     # Otherwise, it should not be set at all.
     libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
     connection_info = {'data': {'device_path': '/foo'}}
     disk_info = {'bus': 'scsi', 'dev': 'sda', 'type': 'disk'}
     if disk_unit:
         disk_info['unit'] = disk_unit
     conf = libvirt_driver.get_config(connection_info, disk_info)
     tree = conf.format_dom()
     address = tree.find('address')
     if disk_unit:
         self.assertEqual('0', address.attrib['controller'])
         self.assertEqual(str(disk_unit), address.attrib['unit'])
     else:
         self.assertIsNone(address)
Esempio n. 7
0
    def test_libvirt_volume_driver_discard_true_bad_version(
            self, mock_has_min_version):
        # Check the discard attrib is not present in driver section
        mock_has_min_version.return_value = False
        libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                'device_path': '/foo',
                'discard': True,
            },
            'serial': 'fake_serial',
        }

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self.assertIsNone(tree.find("driver[@discard]"))
Esempio n. 8
0
    def test_libvirt_volume_driver_discard_true(self, mock_has_min_version):
        # Check the discard attrib is present in driver section
        mock_has_min_version.return_value = True
        libvirt_driver = volume.LibvirtVolumeDriver(self.fake_conn)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                'device_path': '/foo',
                'discard': True,
            },
            'serial': 'fake_serial',
        }

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        driver_node = tree.find("driver[@discard]")
        self.assertIsNotNone(driver_node)
        self.assertEqual('unmap', driver_node.attrib['discard'])
Esempio n. 9
0
    def test_libvirt_volume_driver_encryption_missing_secret(self):
        fake_host = mock.Mock(spec=host.Host)
        fake_host.find_secret.return_value = None

        libvirt_driver = volume.LibvirtVolumeDriver(fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                'volume_id': uuids.volume_id,
                'device_path': '/foo',
                'discard': False,
            },
            'serial': 'fake_serial',
        }

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self.assertIsNone(tree.find("encryption"))
Esempio n. 10
0
 def test_libvirt_volume_driver_blockio(self):
     libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
     connection_info = {
         'driver_volume_type': 'fake',
         'data': {
             'device_path': '/foo',
             'logical_block_size': '4096',
             'physical_block_size': '4096',
         },
         'serial': 'fake_serial',
     }
     disk_info = {
         "bus": "virtio",
         "dev": "vde",
         "type": "disk",
     }
     conf = libvirt_driver.get_config(connection_info, disk_info)
     tree = conf.format_dom()
     blockio = tree.find('./blockio')
     self.assertEqual('4096', blockio.get('logical_block_size'))
     self.assertEqual('4096', blockio.get('physical_block_size'))
Esempio n. 11
0
    def test_libvirt_volume_driver_encryption(self):
        fake_secret = FakeSecret()
        fake_host = mock.Mock(spec=host.Host)
        fake_host.find_secret.return_value = fake_secret

        libvirt_driver = volume.LibvirtVolumeDriver(fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                'volume_id': uuids.volume_id,
                'device_path': '/foo',
                'discard': False,
            },
            'serial': 'fake_serial',
        }
        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        encryption = tree.find("encryption")
        secret = encryption.find("secret")
        self.assertEqual('luks', encryption.attrib['format'])
        self.assertEqual('passphrase', secret.attrib['type'])
        self.assertEqual(SECRET_UUID, secret.attrib['uuid'])
Esempio n. 12
0
    def test_libvirt_volume_driver_iotune(self):
        libvirt_driver = volume.LibvirtVolumeDriver(self.fake_host)
        connection_info = {
            'driver_volume_type': 'fake',
            'data': {
                "device_path": "/foo",
                'qos_specs': 'bar',
            },
        }
        disk_info = {
            "bus": "virtio",
            "dev": "vde",
            "type": "disk",
        }
        conf = libvirt_driver.get_config(connection_info, disk_info)
        tree = conf.format_dom()
        iotune = tree.find('./iotune')
        # ensure invalid qos_specs is ignored
        self.assertIsNone(iotune)

        specs = {
            'total_bytes_sec': '102400',
            'read_bytes_sec': '51200',
            'write_bytes_sec': '0',
            'total_iops_sec': '0',
            'read_iops_sec': '200',
            'write_iops_sec': '200',
        }
        del connection_info['data']['qos_specs']
        connection_info['data'].update(dict(qos_specs=specs))
        conf = libvirt_driver.get_config(connection_info, disk_info)
        tree = conf.format_dom()
        self.assertEqual('102400', tree.find('./iotune/total_bytes_sec').text)
        self.assertEqual('51200', tree.find('./iotune/read_bytes_sec').text)
        self.assertEqual('0', tree.find('./iotune/write_bytes_sec').text)
        self.assertEqual('0', tree.find('./iotune/total_iops_sec').text)
        self.assertEqual('200', tree.find('./iotune/read_iops_sec').text)
        self.assertEqual('200', tree.find('./iotune/write_iops_sec').text)