Exemple #1
0
    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})
Exemple #2
0
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)
Exemple #3
0
def test_running_data():
    workflow = get_workflow()
    props = get_workflow_props(workflow)
    request_id = add_request(**props)
    return request_id