def test_create_cgsnapshot(self): mock_cgsnap = mock.Mock() mock_cgsnap.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" mock_cgsnap.consistencygroup_id = \ "4a2f7e3a-312a-40c5-96a8-536b8a0fe075" mock_context = mock.Mock() self.driver.db = mock.Mock() mock_snap = mock.MagicMock() expected_snaps = [mock_snap] self.driver.db.snapshot_get_all_for_cgsnapshot.return_value = \ expected_snaps model_update, snapshots = \ self.driver.create_cgsnapshot(mock_context, mock_cgsnap) expected_pgroup_name = \ pure._get_pgroup_name_from_id(mock_cgsnap.consistencygroup_id) expected_snap_suffix = pure._get_pgroup_snap_suffix(mock_cgsnap) self.array.create_pgroup_snapshot\ .assert_called_with(expected_pgroup_name, suffix=expected_snap_suffix) self.assertEqual({'status': 'available'}, model_update) self.assertEqual(expected_snaps, snapshots) self.assertEqual('available', mock_snap.status) self.assert_error_propagates([self.array.create_pgroup_snapshot], self.driver.create_cgsnapshot, mock_context, mock_cgsnap)
def test_create_cgsnapshot(self): mock_cgsnap = mock.Mock() mock_cgsnap.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" mock_cgsnap.consistencygroup_id = \ "4a2f7e3a-312a-40c5-96a8-536b8a0fe075" mock_context = mock.Mock() self.driver.db = mock.Mock() mock_snap = mock.MagicMock() expected_snaps = [mock_snap] self.driver.db.snapshot_get_all_for_cgsnapshot.return_value = \ expected_snaps model_update, snapshots = \ self.driver.create_cgsnapshot(mock_context, mock_cgsnap) expected_pgroup_name = \ pure._get_pgroup_name_from_id(mock_cgsnap.consistencygroup_id) expected_snap_suffix = pure._get_pgroup_snap_suffix(mock_cgsnap) self.array.create_pgroup_snapshot\ .assert_called_with(expected_pgroup_name, suffix=expected_snap_suffix) self.assertEqual({'status': 'available'}, model_update) self.assertEqual(expected_snaps, snapshots) self.assertEqual('available', mock_snap.status) self.assert_error_propagates( [self.array.create_pgroup_snapshot], self.driver.create_cgsnapshot, mock_context, mock_cgsnap)
def test_delete_consistencygroup(self, mock_delete_volume): mock_cgroup = mock.MagicMock() mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" mock_cgroup['status'] = "deleted" mock_context = mock.Mock() self.driver.db = mock.Mock() mock_volume = mock.MagicMock() expected_volumes = [mock_volume] self.driver.db.volume_get_all_by_group.return_value = expected_volumes model_update, volumes = \ self.driver.delete_consistencygroup(mock_context, mock_cgroup) expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id) self.array.destroy_pgroup.assert_called_with(expected_name) self.assertEqual(expected_volumes, volumes) self.assertEqual(mock_cgroup['status'], model_update['status']) mock_delete_volume.assert_called_with(self.driver, mock_volume) self.array.destroy_pgroup.side_effect = \ self.purestorage_module.PureHTTPError( code=400, text="Protection group has been destroyed." ) self.driver.delete_consistencygroup(mock_context, mock_cgroup) self.array.destroy_pgroup.assert_called_with(expected_name) mock_delete_volume.assert_called_with(self.driver, mock_volume) self.array.destroy_pgroup.side_effect = \ self.purestorage_module.PureHTTPError( code=400, text="Protection group does not exist" ) self.driver.delete_consistencygroup(mock_context, mock_cgroup) self.array.destroy_pgroup.assert_called_with(expected_name) mock_delete_volume.assert_called_with(self.driver, mock_volume) self.array.destroy_pgroup.side_effect = \ self.purestorage_module.PureHTTPError( code=400, text="Some other error" ) self.assertRaises(self.purestorage_module.PureHTTPError, self.driver.delete_consistencygroup, mock_context, mock_volume) self.array.destroy_pgroup.side_effect = \ self.purestorage_module.PureHTTPError( code=500, text="Another different error" ) self.assertRaises(self.purestorage_module.PureHTTPError, self.driver.delete_consistencygroup, mock_context, mock_volume) self.array.destroy_pgroup.side_effect = None self.assert_error_propagates([self.array.destroy_pgroup], self.driver.delete_consistencygroup, mock_context, mock_cgroup)
def test_create_consistencygroup(self): mock_cgroup = mock.Mock() mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" model_update = self.driver.create_consistencygroup(None, mock_cgroup) expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id) self.array.create_pgroup.assert_called_with(expected_name) self.assertEqual({"status": "available"}, model_update) self.assert_error_propagates([self.array.create_pgroup], self.driver.create_consistencygroup, None, mock_cgroup)
def test_create_consistencygroup(self): mock_cgroup = mock.Mock() mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" model_update = self.driver.create_consistencygroup(None, mock_cgroup) expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id) self.array.create_pgroup.assert_called_with(expected_name) self.assertEqual({'status': 'available'}, model_update) self.assert_error_propagates([self.array.create_pgroup], self.driver.create_consistencygroup, None, mock_cgroup)
def test_delete_consistencygroup(self, mock_delete_volume): mock_cgroup = mock.MagicMock() mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" mock_cgroup["status"] = "deleted" mock_context = mock.Mock() self.driver.db = mock.Mock() mock_volume = mock.MagicMock() expected_volumes = [mock_volume] self.driver.db.volume_get_all_by_group.return_value = expected_volumes model_update, volumes = self.driver.delete_consistencygroup(mock_context, mock_cgroup) expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id) self.array.destroy_pgroup.assert_called_with(expected_name) self.assertEqual(expected_volumes, volumes) self.assertEqual(mock_cgroup["status"], model_update["status"]) mock_delete_volume.assert_called_with(self.driver, mock_volume) self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError( code=400, text="Protection group has been destroyed." ) self.driver.delete_consistencygroup(mock_context, mock_cgroup) self.array.destroy_pgroup.assert_called_with(expected_name) mock_delete_volume.assert_called_with(self.driver, mock_volume) self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError( code=400, text="Protection group does not exist" ) self.driver.delete_consistencygroup(mock_context, mock_cgroup) self.array.destroy_pgroup.assert_called_with(expected_name) mock_delete_volume.assert_called_with(self.driver, mock_volume) self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError(code=400, text="Some other error") self.assertRaises( self.purestorage_module.PureHTTPError, self.driver.delete_consistencygroup, mock_context, mock_volume ) self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError( code=500, text="Another different error" ) self.assertRaises( self.purestorage_module.PureHTTPError, self.driver.delete_consistencygroup, mock_context, mock_volume ) self.array.destroy_pgroup.side_effect = None self.assert_error_propagates( [self.array.destroy_pgroup], self.driver.delete_consistencygroup, mock_context, mock_cgroup )
def test_get_pgroup_name_from_id(self): id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" expected_name = "consisgroup-%s-cinder" % id actual_name = pure._get_pgroup_name_from_id(id) self.assertEqual(expected_name, actual_name)
def test_get_pgroup_name_from_id(self): id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074" expected_name = "consisgroup-%s-cinder" % id actual_name = pure._get_pgroup_name_from_id(id) self.assertEqual(expected_name, actual_name)