def post(self): """ Create Request. HTTP Success: 200 OK HTTP Error: 400 Bad request 500 Internal Error """ try: parameters = self.get_request().data and json_loads( self.get_request().data) if 'status' not in parameters: parameters['status'] = RequestStatus.New if 'priority' not in parameters: parameters['priority'] = 0 # if 'lifetime' not in parameters: # parameters['lifetime'] = 30 if 'username' not in parameters or not parameters['username']: if 'username' in self.get_request( ).environ and self.get_request().environ['username']: parameters['username'] = self.get_request( ).environ['username'] except ValueError: return self.generate_http_response( HTTP_STATUS_CODE.BadRequest, exc_cls=exceptions.BadRequest.__name__, exc_msg='Cannot decode json parameter dictionary') try: parameters = convert_old_req_2_workflow_req(parameters) request_id = add_request(**parameters) except exceptions.DuplicatedObject as error: return self.generate_http_response( HTTP_STATUS_CODE.Conflict, exc_cls=error.__class__.__name__, exc_msg=error) except exceptions.IDDSException as error: return self.generate_http_response( HTTP_STATUS_CODE.InternalError, exc_cls=error.__class__.__name__, exc_msg=error) except Exception as error: print(error) print(format_exc()) return self.generate_http_response( HTTP_STATUS_CODE.InternalError, exc_cls=exceptions.CoreException.__name__, exc_msg=error) return self.generate_http_response(HTTP_STATUS_CODE.OK, data={'request_id': request_id})
def add_request(scope, name, requester=None, request_type=None, transform_tag=None, workload_id=None, status=RequestStatus.New, priority=0, lifetime=30, request_metadata=None): """ Add a request. :param scope: The scope of the request data. :param name: The name of the request data. :param requestr: The requester, such as panda, user and so on. :param request_type: The type of the request, such as ESS, DAOD. :param transform_tag: Transform tag, such as ATLAS AMI tag. :param workload_id: The external workload id. :param status: The request status as integer. :param priority: The priority as integer. :param lifetime: The life time as umber of days. :param request_metadata: The metadata as json. :returns: request id. """ kwargs = { 'scope': scope, 'name': name, 'requester': requester, 'request_type': request_type, 'transform_tag': transform_tag, 'status': status, 'priority': priority, 'workload_id': workload_id, 'lifetime': lifetime, 'request_metadata': request_metadata } return requests.add_request(**kwargs)
def test_running_data(): workflow = get_workflow() props = get_workflow_props(workflow) request_id = add_request(**props) return request_id