Merge "Allow unprivileged RADOS users to access rbd volumes."
This commit is contained in:
		| @@ -241,6 +241,59 @@ class LibvirtVolumeTestCase(test.TestCase): | |||||||
|         self.assertEqual(tree.find('./source').get('protocol'), 'rbd') |         self.assertEqual(tree.find('./source').get('protocol'), 'rbd') | ||||||
|         rbd_name = '%s/%s' % (FLAGS.rbd_pool, name) |         rbd_name = '%s/%s' % (FLAGS.rbd_pool, name) | ||||||
|         self.assertEqual(tree.find('./source').get('name'), rbd_name) |         self.assertEqual(tree.find('./source').get('name'), rbd_name) | ||||||
|  |         self.assertEqual(tree.find('./source/auth'), None) | ||||||
|  |         libvirt_driver.disconnect_volume(connection_info, mount_device) | ||||||
|  |         connection_info = vol_driver.terminate_connection(vol, self.connr) | ||||||
|  |  | ||||||
|  |     def test_libvirt_rbd_driver_auth_enabled(self): | ||||||
|  |         vol_driver = volume_driver.RBDDriver() | ||||||
|  |         libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) | ||||||
|  |         name = 'volume-00000001' | ||||||
|  |         vol = {'id': 1, 'name': name} | ||||||
|  |         connection_info = vol_driver.initialize_connection(vol, self.connr) | ||||||
|  |         uuid = '875a8070-d0b9-4949-8b31-104d125c9a64' | ||||||
|  |         user = 'foo' | ||||||
|  |         secret_type = 'ceph' | ||||||
|  |         connection_info['data']['auth_enabled'] = True | ||||||
|  |         connection_info['data']['auth_username'] = user | ||||||
|  |         connection_info['data']['secret_type'] = secret_type | ||||||
|  |         connection_info['data']['secret_uuid'] = uuid | ||||||
|  |  | ||||||
|  |         mount_device = "vde" | ||||||
|  |         conf = libvirt_driver.connect_volume(connection_info, mount_device) | ||||||
|  |         tree = conf.format_dom() | ||||||
|  |         self.assertEqual(tree.get('type'), 'network') | ||||||
|  |         self.assertEqual(tree.find('./source').get('protocol'), 'rbd') | ||||||
|  |         rbd_name = '%s/%s' % (FLAGS.rbd_pool, name) | ||||||
|  |         self.assertEqual(tree.find('./source').get('name'), rbd_name) | ||||||
|  |         self.assertEqual(tree.find('./auth').get('username'), user) | ||||||
|  |         self.assertEqual(tree.find('./auth/secret').get('type'), secret_type) | ||||||
|  |         self.assertEqual(tree.find('./auth/secret').get('uuid'), uuid) | ||||||
|  |         libvirt_driver.disconnect_volume(connection_info, mount_device) | ||||||
|  |         connection_info = vol_driver.terminate_connection(vol, self.connr) | ||||||
|  |  | ||||||
|  |     def test_libvirt_rbd_driver_auth_disabled(self): | ||||||
|  |         vol_driver = volume_driver.RBDDriver() | ||||||
|  |         libvirt_driver = volume.LibvirtNetVolumeDriver(self.fake_conn) | ||||||
|  |         name = 'volume-00000001' | ||||||
|  |         vol = {'id': 1, 'name': name} | ||||||
|  |         connection_info = vol_driver.initialize_connection(vol, self.connr) | ||||||
|  |         uuid = '875a8070-d0b9-4949-8b31-104d125c9a64' | ||||||
|  |         user = 'foo' | ||||||
|  |         secret_type = 'ceph' | ||||||
|  |         connection_info['data']['auth_enabled'] = False | ||||||
|  |         connection_info['data']['auth_username'] = user | ||||||
|  |         connection_info['data']['secret_type'] = secret_type | ||||||
|  |         connection_info['data']['secret_uuid'] = uuid | ||||||
|  |  | ||||||
|  |         mount_device = "vde" | ||||||
|  |         conf = libvirt_driver.connect_volume(connection_info, mount_device) | ||||||
|  |         tree = conf.format_dom() | ||||||
|  |         self.assertEqual(tree.get('type'), 'network') | ||||||
|  |         self.assertEqual(tree.find('./source').get('protocol'), 'rbd') | ||||||
|  |         rbd_name = '%s/%s' % (FLAGS.rbd_pool, name) | ||||||
|  |         self.assertEqual(tree.find('./source').get('name'), rbd_name) | ||||||
|  |         self.assertEqual(tree.find('./auth'), None) | ||||||
|         libvirt_driver.disconnect_volume(connection_info, mount_device) |         libvirt_driver.disconnect_volume(connection_info, mount_device) | ||||||
|         connection_info = vol_driver.terminate_connection(vol, self.connr) |         connection_info = vol_driver.terminate_connection(vol, self.connr) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -105,6 +105,31 @@ class LibvirtConfigGuestDiskTest(LibvirtConfigBaseTest): | |||||||
|               <target bus="ide" dev="/dev/hda"/> |               <target bus="ide" dev="/dev/hda"/> | ||||||
|             </disk>""") |             </disk>""") | ||||||
|  |  | ||||||
|  |     def test_config_network_auth(self): | ||||||
|  |         obj = config.LibvirtConfigGuestDisk() | ||||||
|  |         obj.source_type = "network" | ||||||
|  |         obj.source_protocol = "rbd" | ||||||
|  |         obj.source_host = "pool/image" | ||||||
|  |         obj.driver_name = "qemu" | ||||||
|  |         obj.driver_format = "raw" | ||||||
|  |         obj.target_dev = "/dev/vda" | ||||||
|  |         obj.target_bus = "virtio" | ||||||
|  |         obj.auth_username = "foo" | ||||||
|  |         obj.auth_secret_type = "ceph" | ||||||
|  |         obj.auth_secret_uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147" | ||||||
|  |  | ||||||
|  |         xml = obj.to_xml() | ||||||
|  |         self.assertXmlEqual(xml, """ | ||||||
|  |             <disk type="network" device="disk"> | ||||||
|  |               <driver name="qemu" type="raw"/> | ||||||
|  |               <source protocol="rbd" name="pool/image"/> | ||||||
|  |               <auth username="foo"> | ||||||
|  |                 <secret type="ceph" | ||||||
|  |                 uuid="b38a3f43-4be2-4046-897f-b67c2f5e0147"/> | ||||||
|  |               </auth> | ||||||
|  |               <target bus="virtio" dev="/dev/vda"/> | ||||||
|  |             </disk>""") | ||||||
|  |  | ||||||
|  |  | ||||||
| class LibvirtConfigGuestFilesysTest(LibvirtConfigBaseTest): | class LibvirtConfigGuestFilesysTest(LibvirtConfigBaseTest): | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins