Exemplo n.º 1
0
    def test_libvirt_rbd_driver_auth_disabled_flags_override(self):
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = False
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        # NOTE: Supplying the rbd_secret_uuid will enable authentication
        # locally in nova-compute even if not enabled in nova-volume/cinder
        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(flags_user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(flags_uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info, "vde",
                                         mock.sentinel.instance)
Exemplo n.º 2
0
    def test_libvirt_rbd_driver_auth_enabled_flags(self):
        # The values from the cinder connection_info take precedence over
        # nova.conf values.
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(self.user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(self.uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info, "vde",
                                         mock.sentinel.instance)
Exemplo n.º 3
0
    def test_libvirt_rbd_driver_auth_enabled_flags_secret_uuid_fallback(self):
        """The values from the cinder connection_info take precedence over
        nova.conf values, unless it's old connection data where the
        secret_uuid wasn't set on the cinder side for the original connection
        which is now persisted in the
        nova.block_device_mappings.connection_info column and used here. In
        this case we fallback to use the local config for secret_uuid.
        """
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        # Fake out cinder not setting the secret_uuid in the old connection.
        connection_info['data']['secret_uuid'] = None

        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(self.user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        # Assert that the secret_uuid comes from CONF.libvirt.rbd_secret_uuid.
        self.assertEqual(flags_uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info, "vde",
                                         mock.sentinel.instance)
Exemplo n.º 4
0
    def test_libvirt_rbd_driver_auth_disabled_flags_override(self):
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = False
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        # NOTE: Supplying the rbd_secret_uuid will enable authentication
        # locally in nova-compute even if not enabled in nova-volume/cinder
        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(flags_user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(flags_uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info,
                                         mock.sentinel.instance)
Exemplo n.º 5
0
    def test_libvirt_rbd_driver_auth_enabled_flags(self):
        # The values from the cinder connection_info take precedence over
        # nova.conf values.
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(self.user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(self.uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info,
                                         mock.sentinel.instance)
Exemplo n.º 6
0
    def test_libvirt_rbd_driver_auth_enabled_flags_secret_uuid_fallback(self):
        """The values from the cinder connection_info take precedence over
        nova.conf values, unless it's old connection data where the
        secret_uuid wasn't set on the cinder side for the original connection
        which is now persisted in the
        nova.block_device_mappings.connection_info column and used here. In
        this case we fallback to use the local config for secret_uuid.
        """
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        # Fake out cinder not setting the secret_uuid in the old connection.
        connection_info['data']['secret_uuid'] = None

        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(self.user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        # Assert that the secret_uuid comes from CONF.libvirt.rbd_secret_uuid.
        self.assertEqual(flags_uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info,
                                         mock.sentinel.instance)
Exemplo n.º 7
0
 def test_libvirt_sheepdog_driver(self):
     libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
     connection_info = self.sheepdog_connection(self.vol)
     conf = libvirt_driver.get_config(connection_info, self.disk_info)
     tree = conf.format_dom()
     self.assertEqual('network', tree.get('type'))
     self.assertEqual('sheepdog', tree.find('./source').get('protocol'))
     self.assertEqual(self.name, tree.find('./source').get('name'))
     libvirt_driver.disconnect_volume(connection_info, "vde")
Exemplo n.º 8
0
 def test_libvirt_rbd_driver(self):
     libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
     connection_info = self.rbd_connection(self.vol)
     conf = libvirt_driver.get_config(connection_info, self.disk_info)
     tree = conf.format_dom()
     self._assertNetworkAndProtocolEquals(tree)
     self.assertIsNone(tree.find('./source/auth'))
     self.assertEqual('1048576', tree.find('./iotune/total_bytes_sec').text)
     self.assertEqual('500', tree.find('./iotune/read_iops_sec').text)
     libvirt_driver.disconnect_volume(connection_info, "vde")
Exemplo n.º 9
0
    def test_libvirt_rbd_driver_auth_disabled(self):
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = False
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertIsNone(tree.find('./auth'))
        libvirt_driver.disconnect_volume(connection_info, "vde")
Exemplo n.º 10
0
 def test_libvirt_rbd_driver_hosts(self):
     libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
     connection_info = self.rbd_connection(self.vol)
     hosts = ['example.com', '1.2.3.4', '::1']
     ports = [None, '6790', '6791']
     connection_info['data']['hosts'] = hosts
     connection_info['data']['ports'] = ports
     conf = libvirt_driver.get_config(connection_info, self.disk_info)
     tree = conf.format_dom()
     self._assertNetworkAndProtocolEquals(tree)
     self.assertIsNone(tree.find('./source/auth'))
     found_hosts = tree.findall('./source/host')
     self.assertEqual(hosts, [host.get('name') for host in found_hosts])
     self.assertEqual(ports, [host.get('port') for host in found_hosts])
     libvirt_driver.disconnect_volume(connection_info, "vde")
Exemplo n.º 11
0
    def test_libvirt_rbd_driver_auth_enabled(self):
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(self.user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(self.uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info, "vde",
                                         mock.sentinel.instance)
Exemplo n.º 12
0
    def test_libvirt_rbd_driver_auth_enabled(self):
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(self.user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(self.uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info,
                                         mock.sentinel.instance)
Exemplo n.º 13
0
 def test_libvirt_iscsi_net_driver(self, mock_delete, mock_create,
                                   mock_find):
     mock_find.return_value = test_volume.FakeSecret()
     mock_create.return_value = test_volume.FakeSecret()
     libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_host)
     connection_info = self.iscsi_connection(self.vol, self.location,
                                             self.iqn, auth=True)
     secret_type = 'iscsi'
     flags_user = connection_info['data']['auth_username']
     conf = libvirt_driver.get_config(connection_info, self.disk_info)
     tree = conf.format_dom()
     self._assertISCSINetworkAndProtocolEquals(tree)
     self.assertEqual(flags_user, tree.find('./auth').get('username'))
     self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
     self.assertEqual(test_volume.SECRET_UUID,
                      tree.find('./auth/secret').get('uuid'))
     libvirt_driver.disconnect_volume(connection_info, 'vde')
Exemplo n.º 14
0
    def test_libvirt_rbd_driver_auth_enabled_flags_override(self):
        libvirt_driver = net.LibvirtNetVolumeDriver(self.fake_conn)
        connection_info = self.rbd_connection(self.vol)
        secret_type = 'ceph'
        connection_info['data']['auth_enabled'] = True
        connection_info['data']['auth_username'] = self.user
        connection_info['data']['secret_type'] = secret_type
        connection_info['data']['secret_uuid'] = self.uuid

        flags_uuid = '37152720-1785-11e2-a740-af0c1d8b8e4b'
        flags_user = '******'
        self.flags(rbd_user=flags_user,
                   rbd_secret_uuid=flags_uuid,
                   group='libvirt')

        conf = libvirt_driver.get_config(connection_info, self.disk_info)
        tree = conf.format_dom()
        self._assertNetworkAndProtocolEquals(tree)
        self.assertEqual(flags_user, tree.find('./auth').get('username'))
        self.assertEqual(secret_type, tree.find('./auth/secret').get('type'))
        self.assertEqual(flags_uuid, tree.find('./auth/secret').get('uuid'))
        libvirt_driver.disconnect_volume(connection_info, "vde")