Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Update Batch Operations API docs #1837

Merged
merged 2 commits into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import javax.validation.Valid
@RestController
@CrossOrigin(origins = ["*"])
@RequestMapping(value = ["/v2/projects/{projectId:\\d+}/", "/v2/projects/"])
@Tag(name = "Batch job management")
@Tag(name = "Batch Operations management")
@Suppress("SpringJavaInjectionPointsAutowiringInspection", "MVCPathVariableInspection")
class BatchJobManagementController(
private val batchJobCancellationManager: BatchJobCancellationManager,
Expand All @@ -47,7 +47,7 @@ class BatchJobManagementController(
@GetMapping(value = ["batch-jobs"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.BATCH_JOBS_VIEW)
@Operation(summary = "Lists all batch jobs in project")
@Operation(summary = "Lists all batch operations in project")
fun list(@Valid @ParameterObject @SortDefault("id") pageable: Pageable): PagedModel<BatchJobModel> {
val views = batchJobService.getViews(projectHolder.project.id, null, pageable)
return pagedResourcesAssembler.toModel(views, batchJobModelAssembler)
Expand All @@ -56,7 +56,7 @@ class BatchJobManagementController(
@GetMapping(value = ["my-batch-jobs"])
@AccessWithApiKey()
@AccessWithAnyProjectPermission()
@Operation(summary = "Lists all batch jobs in project started by current user")
@Operation(summary = "Lists all batch operations in project started by current user")
fun myList(@Valid @ParameterObject @SortDefault("id") pageable: Pageable): PagedModel<BatchJobModel> {
val views = batchJobService.getViews(
projectId = projectHolder.project.id,
Expand All @@ -70,9 +70,9 @@ class BatchJobManagementController(
@AccessWithApiKey()
@AccessWithAnyProjectPermission()
@Operation(
summary = "Returns all running and pending tasks. " +
"Completed tasks are returned only if they are not older than 1 hour. " +
"If user doesn't have permission to view all batch jobs, only their jobs are returned."
summary = "Returns all running and pending batch operations",
description = "Completed batch operations are returned only if they are not older than 1 hour. " +
"If user doesn't have permission to view all batch operations, only their operations are returned."
)
fun currentJobs(): CollectionModel<BatchJobModel> {
val views = batchJobService.getCurrentJobViews(
Expand All @@ -84,7 +84,7 @@ class BatchJobManagementController(
@GetMapping(value = ["batch-jobs/{id}"])
@AccessWithApiKey()
@AccessWithAnyProjectPermission()
@Operation(summary = "Returns the batch job")
@Operation(summary = "Returns batch operation")
fun get(@PathVariable id: Long): BatchJobModel {
val view = batchJobService.getView(id)
checkViewPermission(view.batchJob)
Expand All @@ -94,7 +94,7 @@ class BatchJobManagementController(
@PutMapping(value = ["batch-jobs/{id}/cancel"])
@AccessWithApiKey()
@AccessWithAnyProjectPermission()
@Operation(summary = "Stops batch job (if possible)")
@Operation(summary = "Stops batch operation (if possible)")
fun cancel(@PathVariable id: Long) {
checkCancelPermission(batchJobService.getJobDto(id))
batchJobCancellationManager.cancel(id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import javax.validation.Valid
@RestController
@CrossOrigin(origins = ["*"])
@RequestMapping(value = ["/v2/projects/{projectId:\\d+}/start-batch-job", "/v2/projects/start-batch-job"])
@Tag(name = "Start batch jobs")
@Tag(name = "Batch Operations")
@Suppress("SpringJavaInjectionPointsAutowiringInspection", "MVCPathVariableInspection")
class StartBatchJobController(
private val securityService: SecurityService,
Expand All @@ -46,7 +46,10 @@ class StartBatchJobController(
@PostMapping(value = ["/pre-translate-by-tm"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.BATCH_PRE_TRANSLATE_BY_MT)
@Operation(summary = "Translates provided keys to provided languages")
@Operation(
summary = "Pre-translate by TM",
description = "Pre-translate provided keys to provided languages by TM."
)
fun translate(@Valid @RequestBody data: PreTranslationByTmRequest): BatchJobModel {
securityService.checkLanguageTranslatePermission(projectHolder.project.id, data.targetLanguageIds)
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
Expand All @@ -61,7 +64,10 @@ class StartBatchJobController(
@PostMapping(value = ["/machine-translate"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.BATCH_MACHINE_TRANSLATE)
@Operation(summary = "Translates provided keys to provided languages")
@Operation(
summary = "Machine Translation",
description = "Translate provided keys to provided languages through primary MT provider."
)
fun machineTranslation(@Valid @RequestBody data: MachineTranslationRequest): BatchJobModel {
securityService.checkLanguageTranslatePermission(projectHolder.project.id, data.targetLanguageIds)
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
Expand All @@ -76,7 +82,7 @@ class StartBatchJobController(
@PostMapping(value = ["/delete-keys"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.KEYS_DELETE)
@Operation(summary = "Translates provided keys to provided languages")
@Operation(summary = "Delete keys")
fun deleteKeys(@Valid @RequestBody data: DeleteKeysRequest): BatchJobModel {
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
return batchJobService.startJob(
Expand Down Expand Up @@ -105,7 +111,10 @@ class StartBatchJobController(
@PostMapping(value = ["/clear-translations"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.TRANSLATIONS_EDIT)
@Operation(summary = "Clear translation values")
@Operation(
summary = "Clear translation values",
description = "Clear translation values for provided keys in selected languages."
)
fun clearTranslations(@Valid @RequestBody data: ClearTranslationsRequest): BatchJobModel {
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
securityService.checkLanguageTranslatePermission(projectHolder.project.id, data.languageIds)
Expand All @@ -120,7 +129,10 @@ class StartBatchJobController(
@PostMapping(value = ["/copy-translations"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.TRANSLATIONS_EDIT)
@Operation(summary = "Clear translation values")
@Operation(
summary = "Copy translation values",
description = "Copy translation values from one language to other languages."
)
fun copyTranslations(@Valid @RequestBody data: CopyTranslationRequest): BatchJobModel {
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
securityService.checkLanguageTranslatePermission(projectHolder.project.id, data.targetLanguageIds)
Expand All @@ -136,7 +148,7 @@ class StartBatchJobController(
@PostMapping(value = ["/tag-keys"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.KEYS_EDIT)
@Operation(summary = "Tag keys")
@Operation(summary = "Add tags")
fun tagKeys(@Valid @RequestBody data: TagKeysRequest): BatchJobModel {
data.tags.validate()
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
Expand All @@ -151,7 +163,7 @@ class StartBatchJobController(
@PostMapping(value = ["/untag-keys"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.KEYS_EDIT)
@Operation(summary = "Tag keys")
@Operation(summary = "Remove tags")
fun untagKeys(@Valid @RequestBody data: UntagKeysRequest): BatchJobModel {
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
return batchJobService.startJob(
Expand All @@ -165,7 +177,7 @@ class StartBatchJobController(
@PostMapping(value = ["/set-keys-namespace"])
@AccessWithApiKey()
@AccessWithProjectPermission(Scope.KEYS_EDIT)
@Operation(summary = "Tag keys")
@Operation(summary = "Set keys namespace")
fun setKeysNamespace(@Valid @RequestBody data: SetKeysNamespaceRequest): BatchJobModel {
securityService.checkKeyIdsExistAndIsFromProject(data.keyIds, projectHolder.project.id)
return batchJobService.startJob(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ class BatchJobActivityFinalizer(
waitFor(20000) {
val committedChunks = batchJobStateProvider.get(job.id).values
.count { it.retry == false && it.transactionCommitted && it.status.completed }
logger.debug("Waitinng for completed chunks ($committedChunks) to be equal to all other chunks count (${job.totalChunks - 1})")
logger.debug(
"Waiting for completed chunks ($committedChunks) to be equal to all other chunks" +
" count (${job.totalChunks - 1})"
)
committedChunks == job.totalChunks - 1
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,10 @@ class TokenBucketManager(
}

fun setEmptyUntil(bucketId: String, refillAt: Long) {
logger.debug("Setting bucket $bucketId empty for next ${Duration.ofMillis(refillAt - currentDateProvider.date.time).seconds} seconds")
logger.debug(
"Setting bucket $bucketId empty for " +
"next ${Duration.ofMillis(refillAt - currentDateProvider.date.time).seconds} seconds"
)
updateBucket(bucketId) { setEmptyUntilMappingFn(it, refillAt) }
}

Expand Down
Loading