def reset_many(call: APICall, company_id, request: ResetManyRequest): results, failures = run_batch_operation( func=partial( reset_task, company_id=company_id, force=request.force, return_file_urls=request.return_file_urls, delete_output_models=request.delete_output_models, clear_all=request.clear_all, ), ids=request.ids, ) def clean_res(res: dict) -> dict: # do not return artifacts since they are not serializable fields = res.get("fields") if fields: fields.pop("execution.artifacts", None) return res call.result.data_model = ResetManyResponse( succeeded=[ ResetBatchItem( id=_id, dequeued=bool(dequeued.get("removed")) if dequeued else False, **attr.asdict(cleanup), **clean_res(res), ) for _id, (dequeued, cleanup, res) in results ], failed=failures, )
def delete_many(call: APICall, company_id, request: DeleteManyRequest): results, failures = run_batch_operation( func=partial( delete_task, company_id=company_id, move_to_trash=request.move_to_trash, force=request.force, return_file_urls=request.return_file_urls, delete_output_models=request.delete_output_models, status_message=request.status_message, status_reason=request.status_reason, ), ids=request.ids, ) if results: projects = set(task.project for _, (_, task, _) in results) _reset_cached_tags(company_id, projects=list(projects)) call.result.data = dict( succeeded=[ dict(id=_id, deleted=bool(deleted), **attr.asdict(cleanup_res)) for _id, (deleted, _, cleanup_res) in results ], failed=failures, )
def archive_many(call: APICall, company_id, request: BatchRequest): results, failures = run_batch_operation( func=partial(ModelBLL.archive_model, company_id=company_id), ids=request.ids, ) call.result.data_model = BatchResponse( succeeded=[ dict(id=_id, archived=bool(archived)) for _id, archived in results ], failed=failures, )
def stop_many(call: APICall, company_id, request: StopManyRequest): results, failures = run_batch_operation( func=partial( stop_task, company_id=company_id, user_name=call.identity.user_name, status_reason=request.status_reason, force=request.force, ), ids=request.ids, ) call.result.data_model = UpdateBatchResponse( succeeded=[UpdateBatchItem(id=_id, **res) for _id, res in results], failed=failures, )
def archive_many(call: APICall, company_id, request: TaskBatchRequest): results, failures = run_batch_operation( func=partial( archive_task, company_id=company_id, status_message=request.status_message, status_reason=request.status_reason, ), ids=request.ids, ) call.result.data_model = BatchResponse( succeeded=[ dict(id=_id, archived=bool(archived)) for _id, archived in results ], failed=failures, )
def dequeue_many(call: APICall, company_id, request: TaskBatchRequest): results, failures = run_batch_operation( func=partial( dequeue_task, company_id=company_id, status_message=request.status_message, status_reason=request.status_reason, ), ids=request.ids, ) call.result.data_model = DequeueManyResponse( succeeded=[ DequeueBatchItem(id=_id, dequeued=bool(dequeued), **res) for _id, (dequeued, res) in results ], failed=failures, )
def publish_many(call: APICall, company_id, request: PublishManyRequest): results, failures = run_batch_operation( func=partial( publish_task, company_id=company_id, force=request.force, publish_model_func=ModelBLL.publish_model if request.publish_model else None, status_reason=request.status_reason, status_message=request.status_message, ), ids=request.ids, ) call.result.data_model = UpdateBatchResponse( succeeded=[UpdateBatchItem(id=_id, **res) for _id, res in results], failed=failures, )
def enqueue_many(call: APICall, company_id, request: EnqueueManyRequest): results, failures = run_batch_operation( func=partial( enqueue_task, company_id=company_id, queue_id=request.queue, status_message=request.status_message, status_reason=request.status_reason, validate=request.validate_tasks, ), ids=request.ids, ) call.result.data_model = EnqueueManyResponse( succeeded=[ EnqueueBatchItem(id=_id, queued=bool(queued), **res) for _id, (queued, res) in results ], failed=failures, )
def delete(call: APICall, company_id, request: ModelsDeleteManyRequest): results, failures = run_batch_operation( func=partial(ModelBLL.delete_model, company_id=company_id, force=request.force), ids=request.ids, ) if results: projects = set(model.project for _, (_, model) in results) _reset_cached_tags(company_id, projects=list(projects)) call.result.data_model = BatchResponse( succeeded=[ dict(id=_id, deleted=bool(deleted), url=model.uri) for _id, (deleted, model) in results ], failed=failures, )
def publish_many(call: APICall, company_id, request: ModelsPublishManyRequest): results, failures = run_batch_operation( func=partial( ModelBLL.publish_model, company_id=company_id, force_publish_task=request.force_publish_task, publish_task_func=publish_task if request.publish_task else None, ), ids=request.ids, ) call.result.data_model = BatchResponse( succeeded=[ dict( id=_id, updated=bool(updated), published_task=published_task.to_struct() if published_task else None, ) for _id, (updated, published_task) in results ], failed=failures, )