def test_snapshot_mount_error_raises_Exception(self, mock_create_dir, mock_get_lvm_info, mock_get_vol_fs_type, mock_popen, mock_lvm_snap_remove): mock_get_vol_fs_type.return_value = 'xfs' mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path'} mock_lvcreate_process, mock_mount_process = mock.Mock(), mock.Mock() mock_lvcreate_process.communicate.return_value = '', '' mock_lvcreate_process.returncode = 0 mock_mount_process.communicate.return_value = '', 'mount error' mock_mount_process.returncode = 1 mock_popen.side_effect = [mock_lvcreate_process, mock_mount_process] backup_opt = mock.Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'ro' backup_opt.lvm_snapsize = '1G' with self.assertRaises(Exception) as cm: # noqa lvm.lvm_snap(backup_opt) the_exception = cm.exception self.assertIn('lvm snapshot mounting error', str(the_exception)) mock_lvm_snap_remove.assert_called_once_with(backup_opt)
def test_snapshot_mount_error_raises_Exception(self, mock_create_dir, mock_get_lvm_info, mock_get_vol_fs_type, mock_popen, mock_lvm_snap_remove): mock_get_vol_fs_type.return_value = 'xfs' mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path' } mock_lvcreate_process, mock_mount_process = mock.Mock(), mock.Mock() mock_lvcreate_process.communicate.return_value = '', '' mock_lvcreate_process.returncode = 0 mock_mount_process.communicate.return_value = '', 'mount error' mock_mount_process.returncode = 1 mock_popen.side_effect = [mock_lvcreate_process, mock_mount_process] backup_opt = mock.Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'ro' backup_opt.lvm_snapsize = '1G' with self.assertRaises(Exception) as cm: # noqa lvm.lvm_snap(backup_opt) the_exception = cm.exception self.assertIn('lvm snapshot mounting error', str(the_exception)) mock_lvm_snap_remove.assert_called_once_with(backup_opt)
def test_with_snapshot_opt_simple_sets_correct_path_and_raises_on_perm(self, mock_create_dir, mock_get_lvm_info): mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path'} backup_opt = Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'invalid_value' with self.assertRaises(Exception) as cm: lvm.lvm_snap(backup_opt) the_exception = cm.exception self.assertIn('Invalid value for option lvm-snap-perm', str(the_exception))
def test_with_snapshot_opt_simple_sets_correct_path_and_raises_on_perm( self, mock_create_dir, mock_get_lvm_info): mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path' } backup_opt = mock.Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'invalid_value' with self.assertRaises(Exception) as cm: # noqa lvm.lvm_snap(backup_opt) the_exception = cm.exception self.assertIn('Invalid value for option lvm-snap-perm', str(the_exception))
def test_snapshot_fails(self, mock_create_dir, mock_get_lvm_info, mock_get_vol_fs_type, mock_popen, mock_validate_lvm_params): mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path'} mock_process = Mock() mock_process.communicate.return_value = '', '' mock_process.returncode = 1 mock_popen.return_value = mock_process backup_opt = Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'ro' backup_opt.lvm_snapsize = '1G' with self.assertRaises(Exception) as cm: lvm.lvm_snap(backup_opt) the_exception = cm.exception self.assertIn('lvm snapshot creation error', str(the_exception))
def test_snapshot_fails(self, mock_create_dir, mock_get_lvm_info, mock_get_vol_fs_type, mock_popen, mock_validate_lvm_params): mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path' } mock_process = mock.Mock() mock_process.communicate.return_value = '', '' mock_process.returncode = 1 mock_popen.return_value = mock_process backup_opt = mock.Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'ro' backup_opt.lvm_snapsize = '1G' with self.assertRaises(Exception) as cm: # noqa lvm.lvm_snap(backup_opt) the_exception = cm.exception self.assertIn('lvm snapshot creation error', str(the_exception))
def test_ok(self, mock_create_dir, mock_get_lvm_info, mock_get_vol_fs_type, mock_popen, mock_validate_lvm_params): mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path'} mock_process = Mock() mock_process.communicate.return_value = '', '' mock_process.returncode = 0 mock_popen.return_value = mock_process backup_opt = Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'ro' backup_opt.lvm_volgroup = '' backup_opt.lvm_srcvol = '' backup_opt.lvm_snapsize = '1G' self.assertTrue(lvm.lvm_snap(backup_opt))
def snapshot_create(backup_opt_dict): """ Calls the code to take fs snapshots, depending on the platform :param backup_opt_dict: :return: boolean value, True if snapshot has been taken, false otherwise """ if winutils.is_windows(): if backup_opt_dict.snapshot: # Create a shadow copy. backup_opt_dict.shadow_path, backup_opt_dict.shadow = \ vss.vss_create_shadow_copy(backup_opt_dict.windows_volume) backup_opt_dict.path_to_backup = winutils.use_shadow( backup_opt_dict.path_to_backup, backup_opt_dict.windows_volume) return True return False else: return lvm.lvm_snap(backup_opt_dict)
def test_ok(self, mock_create_dir, mock_get_lvm_info, mock_get_vol_fs_type, mock_popen, mock_validate_lvm_params): mock_get_lvm_info.return_value = { 'volgroup': 'lvm_volgroup', 'srcvol': 'lvm_device', 'snap_path': 'snap_path' } mock_process = mock.Mock() mock_process.communicate.return_value = '', '' mock_process.returncode = 0 mock_popen.return_value = mock_process backup_opt = mock.Mock() backup_opt.snapshot = True backup_opt.path_to_backup = '/just/a/path' backup_opt.lvm_dirmount = '/var/mountpoint' backup_opt.lvm_snapperm = 'ro' backup_opt.lvm_volgroup = '' backup_opt.lvm_srcvol = '' backup_opt.lvm_snapsize = '1G' self.assertTrue(lvm.lvm_snap(backup_opt))
def snapshot_create(backup_opt_dict): """ Calls the code to take fs snapshots, depending on the platform :param backup_opt_dict: :return: boolean value, True if snapshot has been taken, false otherwise """ if not backup_opt_dict.snapshot: return False if winutils.is_windows(): if backup_opt_dict.snapshot: # Create a shadow copy. backup_opt_dict.shadow_path, backup_opt_dict.shadow = \ vss.vss_create_shadow_copy(backup_opt_dict.windows_volume) backup_opt_dict.path_to_backup = winutils.use_shadow( backup_opt_dict.path_to_backup, backup_opt_dict.windows_volume) return True return False else: return lvm.lvm_snap(backup_opt_dict)