From 42b3a4c106b57148b0d9a75ad16664a62919d035 Mon Sep 17 00:00:00 2001 From: bnechyporenko Date: Tue, 10 Sep 2024 21:44:02 +0200 Subject: [PATCH] Generated API reports and hiding the "Retry" option if task is not retryable Signed-off-by: bnechyporenko --- plugins/scaffolder-backend/report.api.md | 14 ++++++++++- plugins/scaffolder-node/report.api.md | 3 +++ plugins/scaffolder-react/report.api.md | 3 +++ plugins/scaffolder/report-alpha.api.md | 2 ++ plugins/scaffolder/report.api.md | 2 ++ .../components/OngoingTask/ContextMenu.tsx | 24 +++++++++++-------- .../components/OngoingTask/OngoingTask.tsx | 19 ++++++++------- 7 files changed, 48 insertions(+), 19 deletions(-) diff --git a/plugins/scaffolder-backend/report.api.md b/plugins/scaffolder-backend/report.api.md index 112d58046b..534a06d6c7 100644 --- a/plugins/scaffolder-backend/report.api.md +++ b/plugins/scaffolder-backend/report.api.md @@ -135,6 +135,14 @@ export function createDebugLogAction(): TemplateAction_2< JsonObject >; +// @public +export function createFailAction(): TemplateAction_2< + { + timesToFail: number; + }, + JsonObject +>; + // @public export function createFetchCatalogEntityAction(options: { catalogClient: CatalogApi; @@ -398,7 +406,6 @@ export interface CurrentClaimedTask { spec: TaskSpec; state?: JsonObject; taskId: string; - // (undocumented) workspace?: Promise; } @@ -488,6 +495,8 @@ export class DatabaseTaskStore implements TaskStore { targetPath: string; }): Promise; // (undocumented) + retryTask?(options: { taskId: string }): Promise; + // (undocumented) saveTaskState(options: { taskId: string; state?: JsonObject }): Promise; // (undocumented) serializeWorkspace(options: { path: string; taskId: string }): Promise; @@ -740,6 +749,8 @@ export interface TaskStore { targetPath: string; }): Promise; // (undocumented) + retryTask?(options: { taskId: string }): Promise; + // (undocumented) saveTaskState?(options: { taskId: string; state?: JsonObject; @@ -776,6 +787,7 @@ export type TaskStoreEmitOptions = { // @public export type TaskStoreListEventsOptions = { + isTaskRecoverable?: boolean; taskId: string; after?: number | undefined; }; diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index ca48a25aa8..906e722641 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -292,6 +292,7 @@ export type SerializedTask = { // @public export type SerializedTaskEvent = { id: number; + isTaskRecoverable?: boolean; taskId: string; body: JsonObject; type: TaskEventType; @@ -340,6 +341,8 @@ export interface TaskBroker { // (undocumented) recoverTasks?(): Promise; // (undocumented) + retry?(taskId: string): Promise; + // (undocumented) vacuumTasks(options: { timeoutS: number }): Promise; } diff --git a/plugins/scaffolder-react/report.api.md b/plugins/scaffolder-react/report.api.md index 0fcb3fbf04..7e967a6462 100644 --- a/plugins/scaffolder-react/report.api.md +++ b/plugins/scaffolder-react/report.api.md @@ -213,6 +213,7 @@ export interface ScaffolderApi { listTasks?(options: { filterByOwnership: 'owned' | 'all' }): Promise<{ tasks: ScaffolderTask[]; }>; + retry?(taskId: string): Promise; scaffold( options: ScaffolderScaffoldOptions, ): Promise; @@ -432,6 +433,8 @@ export interface ScaffolderStreamLogsOptions { // (undocumented) after?: number; // (undocumented) + isTaskRecoverable?: boolean; + // (undocumented) taskId: string; } diff --git a/plugins/scaffolder/report-alpha.api.md b/plugins/scaffolder/report-alpha.api.md index b71bbb1395..32a8284850 100644 --- a/plugins/scaffolder/report-alpha.api.md +++ b/plugins/scaffolder/report-alpha.api.md @@ -216,6 +216,7 @@ export const scaffolderTranslationRef: TranslationRef< readonly 'ongoingTask.title': 'Run of'; readonly 'ongoingTask.contextMenu.cancel': 'Cancel'; readonly 'ongoingTask.contextMenu.startOver': 'Start Over'; + readonly 'ongoingTask.contextMenu.retry': 'Retry'; readonly 'ongoingTask.contextMenu.hideLogs': 'Hide Logs'; readonly 'ongoingTask.contextMenu.showLogs': 'Show Logs'; readonly 'ongoingTask.contextMenu.hideButtonBar': 'Hide Button Bar'; @@ -224,6 +225,7 @@ export const scaffolderTranslationRef: TranslationRef< readonly 'ongoingTask.pageTitle.hasTemplateName': 'Run of {{templateName}}'; readonly 'ongoingTask.pageTitle.noTemplateName': 'Scaffolder Run'; readonly 'ongoingTask.cancelButtonTitle': 'Cancel'; + readonly 'ongoingTask.retryButtonTitle': 'Retry'; readonly 'ongoingTask.startOverButtonTitle': 'Start Over'; readonly 'ongoingTask.hideLogsButtonTitle': 'Hide Logs'; readonly 'ongoingTask.showLogsButtonTitle': 'Show Logs'; diff --git a/plugins/scaffolder/report.api.md b/plugins/scaffolder/report.api.md index 8c60eda7f5..786d654b17 100644 --- a/plugins/scaffolder/report.api.md +++ b/plugins/scaffolder/report.api.md @@ -562,6 +562,8 @@ export class ScaffolderClient implements ScaffolderApi_2 { tasks: ScaffolderTask_2[]; }>; // (undocumented) + retry?(taskId: string): Promise; + // (undocumented) scaffold( options: ScaffolderScaffoldOptions_2, ): Promise; diff --git a/plugins/scaffolder/src/components/OngoingTask/ContextMenu.tsx b/plugins/scaffolder/src/components/OngoingTask/ContextMenu.tsx index f435b487c4..f189a6a03c 100644 --- a/plugins/scaffolder/src/components/OngoingTask/ContextMenu.tsx +++ b/plugins/scaffolder/src/components/OngoingTask/ContextMenu.tsx @@ -43,6 +43,7 @@ import { scaffolderTranslationRef } from '../../translation'; type ContextMenuProps = { cancelEnabled?: boolean; canRetry: boolean; + isRetryableTask: boolean; logsVisible?: boolean; buttonBarVisible?: boolean; onRetry?: () => void; @@ -62,6 +63,7 @@ export const ContextMenu = (props: ContextMenuProps) => { const { cancelEnabled, canRetry, + isRetryableTask, logsVisible, buttonBarVisible, onRetry, @@ -156,16 +158,18 @@ export const ContextMenu = (props: ContextMenuProps) => { - - - - - - + {isRetryableTask && ( + + + + + + + )} {t('ongoingTask.cancelButtonTitle')} - + {isRetryableTask && ( + + )}