def test_libvirt_glusterfs_driver(self, mock_is_mounted): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_host) export_string = '192.168.1.1:/volume-00001' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) connection_info = { 'data': { 'export': export_string, 'name': self.name } } libvirt_driver.connect_volume(connection_info, self.disk_info) libvirt_driver.disconnect_volume(connection_info, "vde") device_path = os.path.join(export_mnt_base, connection_info['data']['name']) self.assertEqual(connection_info['data']['device_path'], device_path) expected_commands = [('mkdir', '-p', export_mnt_base), ('mount', '-t', 'glusterfs', export_string, export_mnt_base), ('umount', export_mnt_base)] self.assertEqual(expected_commands, self.executes) self.assertTrue(mock_is_mounted.called)
def test_libvirt_glusterfs_driver_with_opts(self, mock_is_mounted): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_host) export_string = '192.168.1.1:/volume-00001' options = '-o backupvolfile-server=192.168.1.2' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) connection_info = { 'data': { 'export': export_string, 'name': self.name, 'options': options } } libvirt_driver.connect_volume(connection_info, self.disk_info) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('mkdir', '-p', export_mnt_base), ('mount', '-t', 'glusterfs', '-o', 'backupvolfile-server=192.168.1.2', export_string, export_mnt_base), ('umount', export_mnt_base), ] self.assertEqual(expected_commands, self.executes) self.assertTrue(mock_is_mounted.called)
def test_libvirt_glusterfs_libgfapi(self, mock_is_mounted): self.flags(qemu_allowed_storage_drivers=['gluster'], group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_host) export_string = '192.168.1.1:/volume-00001' name = 'volume-00001' connection_info = {'data': {'export': export_string, 'name': name}} disk_info = { "dev": "vde", "type": "disk", "bus": "virtio", } libvirt_driver.connect_volume(connection_info, disk_info) conf = libvirt_driver.get_config(connection_info, disk_info) tree = conf.format_dom() self.assertEqual('network', tree.get('type')) self.assertEqual('raw', tree.find('./driver').get('type')) source = tree.find('./source') self.assertEqual('gluster', source.get('protocol')) self.assertEqual('volume-00001/volume-00001', source.get('name')) self.assertEqual('192.168.1.1', source.find('./host').get('name')) self.assertEqual('24007', source.find('./host').get('port')) self.assertFalse(mock_is_mounted.called) libvirt_driver.disconnect_volume(connection_info, "vde")
def test_libvirt_glusterfs_driver_get_config(self): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_conn) export_string = '192.168.1.1:/volume-00001' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) file_path = os.path.join(export_mnt_base, self.name) # Test default format - raw connection_info = {'data': {'export': export_string, 'name': self.name, 'device_path': file_path}} conf = libvirt_driver.get_config(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) self.assertEqual('raw', tree.find('./driver').get('type')) # Test specified format - qcow2 connection_info = {'data': {'export': export_string, 'name': self.name, 'device_path': file_path, 'format': 'qcow2'}} conf = libvirt_driver.get_config(connection_info, self.disk_info) tree = conf.format_dom() self._assertFileTypeEquals(tree, file_path) self.assertEqual('qcow2', tree.find('./driver').get('type'))
def test_libvirt_glusterfs_libgfapi(self): self.flags(qemu_allowed_storage_drivers=['gluster'], group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_conn) self.stubs.Set(libvirt_utils, 'is_mounted', lambda x, d: False) export_string = '192.168.1.1:/volume-00001' name = 'volume-00001' connection_info = {'data': {'export': export_string, 'name': name}} disk_info = { "dev": "vde", "type": "disk", "bus": "virtio", } libvirt_driver.connect_volume(connection_info, disk_info) conf = libvirt_driver.get_config(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.get('type'), 'network') self.assertEqual(tree.find('./driver').get('type'), 'raw') source = tree.find('./source') self.assertEqual(source.get('protocol'), 'gluster') self.assertEqual(source.get('name'), 'volume-00001/volume-00001') self.assertEqual(source.find('./host').get('name'), '192.168.1.1') self.assertEqual(source.find('./host').get('port'), '24007') libvirt_driver.disconnect_volume(connection_info, "vde")
def test_libvirt_glusterfs_driver_umount_error(self, mock_LOG_exception, mock_LOG_debug, mock_utils_exe): export_string = '192.168.1.1:/volume-00001' connection_info = {'data': {'export': export_string, 'name': self.name}} libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_host) mock_utils_exe.side_effect = processutils.ProcessExecutionError( None, None, None, 'umount', 'umount: target is busy.') libvirt_driver.disconnect_volume(connection_info, "vde", mock.sentinel.instance) self.assertTrue(mock_LOG_debug.called)
def test_libvirt_glusterfs_driver_already_mounted(self): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_conn) export_string = '192.168.1.1:/volume-00001' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) connection_info = {'data': {'export': export_string, 'name': self.name}} libvirt_driver.connect_volume(connection_info, self.disk_info) libvirt_driver.disconnect_volume(connection_info, "vde") expected_commands = [ ('findmnt', '--target', export_mnt_base, '--source', export_string), ('umount', export_mnt_base)] self.assertEqual(self.executes, expected_commands)
def test_libvirt_glusterfs_driver_already_mounted(self, mock_is_mounted): mnt_base = '/mnt' self.flags(glusterfs_mount_point_base=mnt_base, group='libvirt') libvirt_driver = glusterfs.LibvirtGlusterfsVolumeDriver(self.fake_host) export_string = '192.168.1.1:/volume-00001' export_mnt_base = os.path.join(mnt_base, utils.get_hash_str(export_string)) connection_info = {'data': {'export': export_string, 'name': self.name}} libvirt_driver.connect_volume(connection_info, self.disk_info, mock.sentinel.instance) libvirt_driver.disconnect_volume(connection_info, "vde", mock.sentinel.instance) expected_commands = [ ('umount', export_mnt_base)] self.assertEqual(expected_commands, self.executes)