def test_receiver_create_unapplicable_action(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'create', True) action = 'BAD' body = { 'receiver': { 'name': 'test_receiver', 'type': 'webhook', 'cluster_id': 'FAKE_CLUSTER', 'action': action, } } req = self._post('/receivers', jsonutils.dumps(body)) msg = 'Action BAD is not applicable clusters.' error = senlin_exc.BadRequest(msg=msg) mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=error) resp = shared.request_with_middleware(fault.FaultWrapper, self.controller.create, req, body=body) expected = body['receiver'] type_name = expected.pop('type') expected['type_name'] = type_name expected['actor'] = None expected['params'] = None mock_call.assert_called_once_with(req.context, ('receiver_create', expected)) self.assertEqual(400, resp.json['code']) self.assertEqual('BadRequest', resp.json['error']['type'])
def test_receiver_create_with_bad_type(self, mock_enforce): self._mock_enforce_setup(mock_enforce, 'create', True) r_type = 'unsupported' body = { 'receiver': { 'name': 'test_receiver', 'type': r_type, 'cluster_id': 'FAKE_CLUSTER', 'action': 'test_action', } } req = self._post('/receivers', jsonutils.dumps(body)) msg = _('receiver obj_type (%s) is unsupported.') % r_type error = senlin_exc.BadRequest(msg=msg) mock_call = self.patchobject(rpc_client.EngineClient, 'call', side_effect=error) resp = shared.request_with_middleware(fault.FaultWrapper, self.controller.create, req, body=body) expected_args = body['receiver'] type_name = expected_args.pop('type') expected_args['type_name'] = type_name expected_args['actor'] = None expected_args['params'] = None mock_call.assert_called_once_with(req.context, ('receiver_create', expected_args)) self.assertEqual(400, resp.json['code']) self.assertEqual('BadRequest', resp.json['error']['type'])
def test_node_adopt_failed_preview(self, mock_preview, mock_create): req = orno.NodeAdoptRequest(identity='FAKE_ID', type='FAKE_TYPE') mock_preview.side_effect = exc.BadRequest(msg='boom') ex = self.assertRaises(rpc.ExpectedException, self.eng.node_adopt, self.ctx, req.obj_to_primitive()) mock_preview.assert_called_once_with(self.ctx, mock.ANY) self.assertIsInstance(mock_preview.call_args[0][1], orno.NodeAdoptRequest) self.assertEqual(exc.BadRequest, ex.exc_info[0]) self.assertEqual("boom.", six.text_type(ex.exc_info[1]))
def get_path_parser(path): """Get a JsonPath parser based on a path string. :param path: A string containing a JsonPath. :returns: A parser used for path matching. :raises: An exception of `BadRequest` if the path fails validation. """ try: expr = parse(path) except Exception as ex: error_text = six.text_type(ex) error_msg = error_text.split(':', 1)[1] raise exception.BadRequest(msg=_("Invalid attribute path - %s") % error_msg.strip()) return expr
def _set_cluster_dependents(self, obj): ctx = context.get_service_context(user_id=obj.user, project_id=obj.project) master = self.properties[self.MASTER_CLUSTER] try: master_cluster = cluster_obj.Cluster.find(ctx, master) except exc.ResourceNotFound: msg = _("Cannot find the given cluster: %s") % master raise exc.BadRequest(msg=msg) if master_cluster: # configure kube master dependents, kube master record kube node # cluster uuid master_dependents = master_cluster.dependents master_dependents['kube-node'] = obj.id cluster_obj.Cluster.update(ctx, master_cluster.id, {'dependents': master_dependents})
def _del_cluster_dependents(self, obj): ctx = context.get_service_context(user_id=obj.user, project_id=obj.project) master = self.properties[self.MASTER_CLUSTER] try: master_cluster = cluster_obj.Cluster.find(ctx, master) except exc.ResourceNotFound: msg = _("Cannot find the given cluster: %s") % master raise exc.BadRequest(msg=msg) if master_cluster: # remove kube master record kube node dependents master_dependents = master_cluster.dependents if master_dependents and 'kube-node' in master_dependents: master_dependents.pop('kube-node') cluster_obj.Cluster.update(ctx, master_cluster.id, {'dependents': master_dependents})
def test_create_from_exception(self): ex = None pload = None try: {}['key'] except Exception: ex = exception.BadRequest(msg="It is really bad.") pload = base.ExceptionPayload.from_exception(ex) self.assertIsNotNone(ex) self.assertIsNotNone(pload) # 'senlin.tests.unit.objects.notifications.test_exception', self.assertEqual(self.__module__, pload.module) self.assertEqual('test_create_from_exception', pload.function) self.assertEqual('BadRequest', pload.exception) self.assertEqual("It is really bad.", pload.message)
def test_node_index_cluster_not_found(self, mock_call, mock_parse, mock_enforce): self._mock_enforce_setup(mock_enforce, 'index', True) cluster_id = 'non-existent' req = self._get('/nodes', {'cluster_id': cluster_id}) obj = mock.Mock() mock_parse.return_value = obj msg = "Cannot find the given cluster: non-existent" error = senlin_exc.BadRequest(msg=msg) mock_call.side_effect = shared.to_remote_error(error) resp = shared.request_with_middleware(fault.FaultWrapper, self.controller.index, req) self.assertEqual(400, resp.json['code']) self.assertEqual('BadRequest', resp.json['error']['type']) mock_parse.assert_called_once_with('NodeListRequest', mock.ANY, { 'cluster_id': 'non-existent', 'project_safe': True }) mock_call.assert_called_once_with(req.context, 'node_list2', obj)