def _reset_status(self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None, version='2.7'): if float(version) > 2.6: action_name = 'reset_status' else: action_name = 'os-reset_status' if body is None: body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.headers['X-Openstack-Manila-Api-Version'] = version req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises(exception.NotFound, db_access_method, ctxt, model['id']) else: actual_model = db_access_method(ctxt, model['id']) self.assertEqual(valid_status, actual_model['status'])
def _reset_status(self, context, instance, req, valid_code=202, valid_status=None, body=None): if body is None: body = {'reset_status': {'status': constants.STATUS_ERROR}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = context with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises(exception.ShareSnapshotInstanceNotFound, (share_snapshot_instances.db. share_snapshot_instance_get), context, instance['id']) else: actual_instance = ( share_snapshot_instances.db.share_snapshot_instance_get( context, instance['id'])) self.assertEqual(valid_status, actual_instance['status'])
def _force_delete(self, ctxt, model, req, db_access_method, valid_code, check_model_in_db=False, version='2.7'): if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.headers['X-Openstack-Manila-Api-Version'] = version req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(valid_code, resp.status_int) if valid_code == 202 and check_model_in_db: self.assertRaises(exception.NotFound, db_access_method, ctxt, model['id'])
def _reset_status(self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None, version='2.7'): if float(version) > 2.6: action_name = 'reset_status' else: action_name = 'os-reset_status' if body is None: body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.headers['X-Openstack-Manila-Api-Version'] = version req.body = jsonutils.dumps(body).encode("utf-8") req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) actual_model = db_access_method(ctxt, model['id']) self.assertEqual(valid_status, actual_model['status'])
def _reset_status( self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None, version="2.7" ): if float(version) > 2.6: action_name = "reset_status" else: action_name = "os-reset_status" if body is None: body = {action_name: {"status": constants.STATUS_ERROR}} req.method = "POST" req.headers["content-type"] = "application/json" req.headers["X-Openstack-Manila-Api-Version"] = version req.body = six.b(jsonutils.dumps(body)) req.environ["manila.context"] = ctxt with mock.patch.object(policy, "check_policy", fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises(exception.NotFound, db_access_method, ctxt, model["id"]) else: actual_model = db_access_method(ctxt, model["id"]) self.assertEqual(valid_status, actual_model["status"])
def _reset_status(self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None): if body is None: body = {'os-reset_status': {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises(exception.NotFound, db_access_method, ctxt, model['id']) else: actual_model = db_access_method(ctxt, model['id']) self.assertEqual(valid_status, actual_model['status'])
def test_share_groups_reset_status_with_different_roles( self, role, valid_code, valid_status, version): ctxt = self._get_context(role) share_group, req = self._setup_share_group_data() action_name = 'reset_status' body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = six.b(jsonutils.dumps(body)) req.headers['X-Openstack-Manila-Api-Version'] = self.api_version req.environ['manila.context'] = ctxt with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises( exception.NotFound, db.share_group_get, ctxt, share_group['id']) else: actual_model = db.share_group_get(ctxt, share_group['id']) self.assertEqual(valid_status, actual_model['status'])
def _reset_status(self, context, replica, req, valid_code=202, status_attr='status', valid_status=None, body=None): if status_attr == 'status': action_name = 'reset_status' body = body or {action_name: {'status': constants.STATUS_ERROR}} else: action_name = 'reset_replica_state' body = body or { action_name: {'replica_state': constants.STATUS_ERROR}, } req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = context with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises(exception.ShareReplicaNotFound, share_replicas.db.share_replica_get, context, replica['id']) else: actual_replica = share_replicas.db.share_replica_get( context, replica['id']) self.assertEqual(valid_status, actual_replica[status_attr])
def _force_delete(self, ctxt, model, req, db_access_method, valid_code, check_model_in_db=False, version='2.7'): if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.headers['X-Openstack-Manila-Api-Version'] = version req.body = jsonutils.dumps(body).encode("utf-8") req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(valid_code, resp.status_int) if valid_code == 202 and check_model_in_db: self.assertRaises(exception.NotFound, db_access_method, ctxt, model['id'])
def _reset_status(self, context, instance, req, valid_code=202, valid_status=None, body=None): if body is None: body = {'reset_status': {'status': constants.STATUS_ERROR}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = context with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises( exception.ShareSnapshotInstanceNotFound, (share_snapshot_instances.db.share_snapshot_instance_get), context, instance['id']) else: actual_instance = ( share_snapshot_instances.db.share_snapshot_instance_get( context, instance['id'])) self.assertEqual(valid_status, actual_instance['status'])
def _reset_status(self, context, replica, req, valid_code=202, status_attr='status', valid_status=None, body=None): if status_attr == 'status': action_name = 'reset_status' body = body or {action_name: {'status': constants.STATUS_ERROR}} else: action_name = 'reset_replica_state' body = body or { action_name: { 'replica_state': constants.STATUS_ERROR }, } req.body = jsonutils.dumps(body).encode("utf-8") req.environ['manila.context'] = context with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) actual_replica = share_replicas.db.share_replica_get( context, replica['id']) self.assertEqual(valid_status, actual_replica[status_attr])
def test_share_groups_reset_status_with_different_roles( self, role, valid_code, valid_status, version): ctxt = self._get_context(role) share_group, req = self._setup_share_group_data() action_name = 'reset_status' body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = six.b(jsonutils.dumps(body)) req.headers['X-Openstack-Manila-Api-Version'] = self.api_version req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) if valid_code == 404: self.assertRaises(exception.NotFound, db.share_group_get, ctxt, share_group['id']) else: actual_model = db.share_group_get(ctxt, share_group['id']) self.assertEqual(valid_status, actual_model['status'])
def _force_delete(self, ctxt, model, req, db_access_method, valid_code): action_name = 'os-force_delete' req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = six.b(jsonutils.dumps({action_name: {}})) req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # Validate response self.assertEqual(valid_code, resp.status_int)
def _force_delete(self, context, req, valid_code=202): body = {'force_delete': {}} req.environ['manila.context'] = context req.body = jsonutils.dumps(body).encode("utf-8") with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(valid_code, resp.status_int)
def _force_delete(self, context, req, valid_code=202): body = {'force_delete': {}} req.environ['manila.context'] = context req.body = six.b(jsonutils.dumps(body)) with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(valid_code, resp.status_int)
def _force_delete(self, ctxt, model, req, db_access_method, valid_code, version='2.7'): if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' req.method = 'POST' req.headers['content-type'] = 'application/json' req.headers['X-Openstack-Manila-Api-Version'] = version req.body = six.b(jsonutils.dumps({action_name: {}})) req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # Validate response self.assertEqual(valid_code, resp.status_int)
def _force_delete(self, ctxt, model, req, db_access_method, valid_code, check_model_in_db=False): req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = jsonutils.dumps({'os-force_delete': {}}).encode("utf-8") req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # validate response self.assertEqual(valid_code, resp.status_int) if valid_code == 202 and check_model_in_db: self.assertRaises(exception.NotFound, db_access_method, ctxt, model['id'])
def test_resync_replica_not_found(self): replica, req = self._create_replica_get_req() share_replicas.db.share_replica_delete( self.admin_context, replica['id'], need_to_update_usages=False) share_api_call = self.mock_object(self.controller.share_api, 'update_share_replica') body = {'resync': {}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = self.admin_context with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) self.assertEqual(404, resp.status_int) self.assertFalse(share_api_call.called)
def _reset_status(self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None): action_name = 'os-reset_status' if body is None: body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) actual_model = db_access_method(ctxt, model['id']) self.assertEqual(valid_status, actual_model['status'])
def _force_delete(self, ctxt, model, req, db_access_method, valid_code, check_model_in_db=False): req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = six.b(jsonutils.dumps({'os-force_delete': {}})) req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # validate response self.assertEqual(valid_code, resp.status_int) if valid_code == 202 and check_model_in_db: self.assertRaises(exception.NotFound, db_access_method, ctxt, model['id'])
def test_resync_replica_not_found(self): replica, req = self._create_replica_get_req() share_replicas.db.share_replica_delete( self.admin_context, replica['id']) share_api_call = self.mock_object(self.controller.share_api, 'update_share_replica') body = {'resync': {}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = self.admin_context with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) self.assertEqual(404, resp.status_int) self.assertFalse(share_api_call.called)
def test_share_group_force_delete_with_different_roles(self, role, resp_code, version): ctxt = self._get_context(role) share_group, req = self._setup_share_group_data() req.method = 'POST' req.headers['content-type'] = 'application/json' action_name = 'force_delete' body = {action_name: {}} req.body = six.b(jsonutils.dumps(body)) req.headers['X-Openstack-Manila-Api-Version'] = self.api_version req.environ['manila.context'] = ctxt with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(resp_code, resp.status_int)
def test_share_group_force_delete_with_different_roles( self, role, resp_code, version): ctxt = self._get_context(role) share_group, req = self._setup_share_group_data() req.method = 'POST' req.headers['content-type'] = 'application/json' action_name = 'force_delete' body = {action_name: {}} req.body = six.b(jsonutils.dumps(body)) req.headers['X-Openstack-Manila-Api-Version'] = self.api_version req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(resp_code, resp.status_int)
def test_share_group_snapshot_force_delete_with_different_roles( self, role, resp_code, version): group_snap, req = self._setup_share_group_snapshot_data() ctxt = self._get_context(role) req.method = 'POST' req.headers['content-type'] = 'application/json' action_name = 'force_delete' body = {action_name: {'status': constants.STATUS_ERROR}} req.body = jsonutils.dumps(body).encode("utf-8") req.headers['X-Openstack-Manila-Api-Version'] = self.api_version req.headers['X-Openstack-Manila-Api-Experimental'] = True req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # Validate response self.assertEqual(resp_code, resp.status_int)
def test_resync_API_exception(self): replica, req = self._create_replica_get_req( replica_state=constants.REPLICA_STATE_OUT_OF_SYNC) self.mock_object(share_replicas.db, 'share_replica_get', mock.Mock(return_value=replica)) share_api_call = self.mock_object( share.API, 'update_share_replica', mock.Mock( side_effect=exception.InvalidHost(reason=''))) body = {'resync': None} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = self.admin_context with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) self.assertEqual(400, resp.status_int) share_api_call.assert_called_once_with(self.admin_context, replica)
def test_resync_API_exception(self): replica, req = self._create_replica_get_req( replica_state=constants.REPLICA_STATE_OUT_OF_SYNC) self.mock_object(share_replicas.db, 'share_replica_get', mock.Mock(return_value=replica)) share_api_call = self.mock_object( share.API, 'update_share_replica', mock.Mock(side_effect=exception.InvalidHost(reason=''))) body = {'resync': None} req.body = jsonutils.dumps(body).encode("utf-8") req.environ['manila.context'] = self.admin_context with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) self.assertEqual(400, resp.status_int) share_api_call.assert_called_once_with(self.admin_context, replica)
def test_resync(self, replica_state): replica, req = self._create_replica_get_req( replica_state=replica_state, host='skywalker@jedi#temple') share_api_call = self.mock_object( share.API, 'update_share_replica', mock.Mock(return_value=None)) body = {'resync': {}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = self.admin_context with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) if replica_state == constants.REPLICA_STATE_ACTIVE: self.assertEqual(200, resp.status_int) self.assertFalse(share_api_call.called) else: self.assertEqual(202, resp.status_int) self.assertTrue(share_api_call.called)
def test_resync(self, replica_state): replica, req = self._create_replica_get_req( replica_state=replica_state, host='skywalker@jedi#temple') share_api_call = self.mock_object(share.API, 'update_share_replica', mock.Mock(return_value=None)) body = {'resync': {}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = self.admin_context with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) if replica_state == constants.REPLICA_STATE_ACTIVE: self.assertEqual(200, resp.status_int) self.assertFalse(share_api_call.called) else: self.assertEqual(202, resp.status_int) self.assertTrue(share_api_call.called)
def test_consistency_group_force_delete_with_different_roles( self, role, resp_code, version): ctxt = self._get_context(role) cg, req = self._setup_cg_data(version=version) req.method = 'POST' req.headers['content-type'] = 'application/json' if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' body = {action_name: {}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(resp_code, resp.status_int)
def test_cgsnapshot_force_delete_with_different_roles(self, role, resp_code, version): cgsnap, req = self._setup_cgsnapshot_data() ctxt = self._get_context(role) req.method = 'POST' req.headers['content-type'] = 'application/json' if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' body = {action_name: {'status': constants.STATUS_ERROR}} req.body = six.b(jsonutils.dumps(body)) req.headers['X-Openstack-Manila-Api-Version'] = version req.environ['manila.context'] = ctxt with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # Validate response self.assertEqual(resp_code, resp.status_int)
def test_consistency_group_force_delete_with_different_roles(self, role, resp_code, version): ctxt = self._get_context(role) cg, req = self._setup_cg_data(version=version) req.method = 'POST' req.headers['content-type'] = 'application/json' if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' body = {action_name: {}} req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response self.assertEqual(resp_code, resp.status_int)
def test_cgsnapshot_force_delete_with_different_roles( self, role, resp_code, version): cgsnap, req = self._setup_cgsnapshot_data() ctxt = self._get_context(role) req.method = 'POST' req.headers['content-type'] = 'application/json' if float(version) > 2.6: action_name = 'force_delete' else: action_name = 'os-force_delete' body = {action_name: {'status': constants.STATUS_ERROR}} req.body = six.b(jsonutils.dumps(body)) req.headers['X-Openstack-Manila-Api-Version'] = version req.environ['manila.context'] = ctxt with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # Validate response self.assertEqual(resp_code, resp.status_int)
def _reset_status(self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None, version='2.7'): if float(version) > 2.6: action_name = 'reset_status' else: action_name = 'os-reset_status' if body is None: body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.headers['X-Openstack-Manila-Api-Version'] = version req.body = six.b(jsonutils.dumps(body)) req.environ['manila.context'] = ctxt with mock.patch.object( policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) actual_model = db_access_method(ctxt, model['id']) self.assertEqual(valid_status, actual_model['status'])
def _reset_status(self, ctxt, model, req, db_access_method, valid_code, valid_status=None, body=None): action_name = 'os-reset_status' if body is None: body = {action_name: {'status': constants.STATUS_ERROR}} req.method = 'POST' req.headers['content-type'] = 'application/json' req.body = jsonutils.dumps(body).encode("utf-8") req.environ['manila.context'] = ctxt resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) actual_model = db_access_method(ctxt, model['id']) self.assertEqual(valid_status, actual_model['status'])
def _reset_status(self, context, instance, req, valid_code=202, valid_status=None, body=None): if body is None: body = {'reset_status': {'status': constants.STATUS_ERROR}} req.body = jsonutils.dumps(body).encode("utf-8") req.environ['manila.context'] = context with mock.patch.object(policy, 'check_policy', fakes.mock_fake_admin_check): resp = req.get_response(fakes.app()) # validate response code and model status self.assertEqual(valid_code, resp.status_int) actual_instance = ( share_snapshot_instances.db.share_snapshot_instance_get( context, instance['id'])) self.assertEqual(valid_status, actual_instance['status'])