示例#1
0
def get_exportd_jobs(params: CollectionParameters):
    """Iterate route for exportd jobs"""

    job_manager = ExportDJobManager(current_app.database_manager)
    body = request.method == 'HEAD'

    try:
        iteration_result: IterationResult[ExportdJob] = job_manager.iterate(
            filter=params.filter,
            limit=params.limit,
            skip=params.skip,
            sort=params.sort,
            order=params.order)
        types = [ExportdJob.to_json(type) for type in iteration_result.results]
        api_response = GetMultiResponse(types,
                                        total=iteration_result.total,
                                        params=params,
                                        url=request.url,
                                        model=ExportdJob.MODEL,
                                        body=body)
    except ManagerIterationError as err:
        return abort(400, err.message)
    except ManagerGetError as err:
        return abort(404, err.message)
    return api_response.make_response()
示例#2
0
def add_job(request_user: UserModel):
    from bson import json_util
    add_data_dump = json.dumps(request.json)
    try:
        new_job_data = json.loads(add_data_dump,
                                  object_hook=json_util.object_hook)
        new_job_data['public_id'] = exportd_manager.get_new_id(
            ExportdJob.COLLECTION)
        new_job_data['last_execute_date'] = datetime.now(timezone.utc)
        new_job_data['author_id'] = request_user.get_public_id()
        new_job_data['author_name'] = request_user.get_display_name()
        new_job_data['state'] = ExecuteState.SUCCESSFUL.name
    except TypeError as e:
        LOGGER.warning(e)
        abort(400)
    try:
        job_instance = ExportdJob(**new_job_data)
    except CMDBError as e:
        LOGGER.debug(e)
        return abort(400)
    try:
        ack = exportd_manager.insert_job(job_instance)
    except ExportdJobManagerInsertError:
        return abort(500)

    # Generate new insert log
    try:
        log_params = {
            'job_id': job_instance.get_public_id(),
            'state': True,
            'user_id': request_user.get_public_id(),
            'user_name': request_user.get_display_name(),
            'event': LogAction.CREATE.name,
            'message': '',
        }
        log_manager.insert_log(action=LogAction.CREATE,
                               log_type=ExportdJobLog.__name__,
                               **log_params)
    except LogManagerInsertError as err:
        LOGGER.error(err)

    return make_response(ExportdJob.to_json(job_instance))