From 82659874de0a366cb5fdbfeb627db0779fdf4a21 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Wed, 14 Jun 2023 11:43:21 +0200 Subject: [PATCH 01/17] Add message field Signed-off-by: Gloria Ciavarrini --- .../parodos/workflows/work/DefaultWorkReport.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java index 6c4c7488d..21159db8c 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java @@ -36,6 +36,8 @@ public class DefaultWorkReport implements WorkReport { private Throwable error; + private String message; + /** * Create a new {@link DefaultWorkReport}. * @param status of work @@ -55,6 +57,16 @@ public DefaultWorkReport(WorkStatus status, WorkContext workContext, Throwable e this.error = error; } + /** + * Create a new {@link DefaultWorkReport}. + * @param status of work + * @param message if any + */ + public DefaultWorkReport(WorkStatus status, WorkContext workContext, String message) { + this(status, workContext); + this.message = message; + } + public WorkStatus getStatus() { return status; } From b068259116a0ec92546ca19af119502b4918b04b Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 08:26:36 +0200 Subject: [PATCH 02/17] Defaul work report delete message --- .../workflows/work/DefaultWorkReport.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java index 21159db8c..42dd5ec1a 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java @@ -36,7 +36,7 @@ public class DefaultWorkReport implements WorkReport { private Throwable error; - private String message; + private String alertMessage; /** * Create a new {@link DefaultWorkReport}. @@ -60,11 +60,11 @@ public DefaultWorkReport(WorkStatus status, WorkContext workContext, Throwable e /** * Create a new {@link DefaultWorkReport}. * @param status of work - * @param message if any + * @param alertMessage if any */ - public DefaultWorkReport(WorkStatus status, WorkContext workContext, String message) { + public DefaultWorkReport(WorkStatus status, WorkContext workContext, String alertMessage) { this(status, workContext); - this.message = message; + this.alertMessage = alertMessage; } public WorkStatus getStatus() { @@ -80,10 +80,15 @@ public WorkContext getWorkContext() { return workContext; } + @Override + public String getAlertMessage() { + return this.alertMessage; + } + @Override public String toString() { - return "DefaultWorkReport {" + "status=" + status + ", context=" + workContext + ", error=" - + (error == null ? "''" : error) + '}'; + return "DefaultWorkReport {" + "status=" + status + ", context=" + workContext + ", alertMessage='" + + alertMessage + ", error=" + (error == null ? "''" : error) + '}'; } } From 75403580a4d9a831b0780027e318bae93cd5d0e7 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Wed, 14 Jun 2023 11:51:03 +0200 Subject: [PATCH 03/17] Fix ambiguous constructor calls Signed-off-by: Gloria Ciavarrini --- .../parodos/tasks/deploy/DeployApplicationTask.java | 2 +- .../redhat/parodos/tasks/git/GitArchiveTask.java | 2 +- .../com/redhat/parodos/tasks/git/GitBranchTask.java | 2 +- .../com/redhat/parodos/tasks/git/GitCloneTask.java | 2 +- .../com/redhat/parodos/tasks/git/GitCommitTask.java | 2 +- .../com/redhat/parodos/tasks/git/GitPushTask.java | 2 +- .../com/redhat/parodos/tasks/jira/JiraTask.java | 6 +++--- .../parodos/workflows/work/DefaultWorkReport.java | 13 +++++++++++++ .../execution/service/WorkFlowServiceImpl.java | 2 +- 9 files changed, 23 insertions(+), 10 deletions(-) diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/deploy/DeployApplicationTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/deploy/DeployApplicationTask.java index 130da240c..76e02878c 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/deploy/DeployApplicationTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/deploy/DeployApplicationTask.java @@ -135,7 +135,7 @@ public WorkReport execute(WorkContext workContext) { } workContext.put(DeployConstants.APPLICATION_HOSTNAMES, hostnames); - return new DefaultWorkReport(WorkStatus.COMPLETED, workContext, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); } private static Set loadManifests(String manifestsPath) throws IOException { diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitArchiveTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitArchiveTask.java index 369308c7d..db3f0e69a 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitArchiveTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitArchiveTask.java @@ -73,7 +73,7 @@ public WorkReport execute(WorkContext workContext) { } } - return new DefaultWorkReport(WorkStatus.COMPLETED, workContext, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); } private Repository getRepo(String path) throws IOException { diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitBranchTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitBranchTask.java index 45ed4c706..e5bbee938 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitBranchTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitBranchTask.java @@ -77,7 +77,7 @@ public WorkReport execute(WorkContext workContext) { "Cannot create the branch on the repository: %s".formatted(e.getMessage()), e)); } - return new DefaultWorkReport(WorkStatus.COMPLETED, workContext, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); } private Repository getRepo(String path) throws IOException { diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCloneTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCloneTask.java index 0acba013b..d78f9328f 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCloneTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCloneTask.java @@ -74,7 +74,7 @@ public WorkReport execute(WorkContext workContext) { workContext.put(GitConstants.CONTEXT_URI, gitUri); workContext.put(GitConstants.CONTEXT_DESTINATION, destination); workContext.put(GitConstants.CONTEXT_BRANCH, gitBranch); - return new DefaultWorkReport(WorkStatus.COMPLETED, workContext, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); } private String cloneRepo(String gitUri, String gitBranch, String credentials) diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCommitTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCommitTask.java index 2b0d84f62..3fddef5d0 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCommitTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitCommitTask.java @@ -67,7 +67,7 @@ public WorkReport execute(WorkContext workContext) { return new DefaultWorkReport(WorkStatus.FAILED, workContext, new RuntimeException("Cannot create the commit on the repository: %s".formatted(e))); } - return new DefaultWorkReport(WorkStatus.COMPLETED, workContext, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); } private Repository getRepo(String path) throws IOException { diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitPushTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitPushTask.java index a3053e364..ac4e0d8ac 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitPushTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/git/GitPushTask.java @@ -79,7 +79,7 @@ public WorkReport execute(WorkContext workContext) { } } - return new DefaultWorkReport(WorkStatus.COMPLETED, workContext, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); } private Repository getRepo(String path) throws IOException { diff --git a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/jira/JiraTask.java b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/jira/JiraTask.java index d645a91c3..99cfc4475 100644 --- a/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/jira/JiraTask.java +++ b/prebuilt-tasks/src/main/java/com/redhat/parodos/tasks/jira/JiraTask.java @@ -96,7 +96,7 @@ public WorkReport execute(WorkContext workContext) { if (id.isBlank()) { try { JiraIssue issue = createIssue(new JiraIssue("", project, summary, description, "", List.of(comment))); - WorkReport report = new DefaultWorkReport(WorkStatus.COMPLETED, new WorkContext(), null); + WorkReport report = new DefaultWorkReport(WorkStatus.COMPLETED, new WorkContext()); report.getWorkContext().put("issue", issue); return report; } @@ -114,7 +114,7 @@ public WorkReport execute(WorkContext workContext) { var context = new WorkContext(); context.put("issue", issue); - return new DefaultWorkReport(WorkStatus.COMPLETED, context, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, context); } if (!summary.isBlank() && !issue.summary.equals(summary)) { issue.summary = summary; @@ -134,7 +134,7 @@ public WorkReport execute(WorkContext workContext) { } var context = new WorkContext(); context.put("issue", issue); - return new DefaultWorkReport(WorkStatus.COMPLETED, context, null); + return new DefaultWorkReport(WorkStatus.COMPLETED, context); } catch (Exception e) { return new DefaultWorkReport(WorkStatus.FAILED, workContext, e); diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java index 42dd5ec1a..a0f84bf91 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java @@ -67,6 +67,19 @@ public DefaultWorkReport(WorkStatus status, WorkContext workContext, String aler this.alertMessage = alertMessage; } + /** + * Create a new {@link DefaultWorkReport}. + * @param status of work + * @param error if any + * @param message if any + */ + public DefaultWorkReport(WorkStatus status, WorkContext workContext, Throwable error, String message) { + this(status, workContext); + this.error = error; + this.message = message; + } + + public WorkStatus getStatus() { return status; } diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceImpl.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceImpl.java index fe82801b5..4ab3acbbf 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceImpl.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceImpl.java @@ -160,7 +160,7 @@ public WorkReport execute(WorkFlowRequestDTO workFlowRequestDTO) { workFlowExecutor.execute(WorkFlowExecutor.ExecutionContext.builder().projectId(projectId).userId(user.getId()) .workFlowName(workflowName).workContext(workContext).executionId(workFlowExecution.getId()) .rollbackWorkFlowName(workFlowDefinitionResponseDTO.getRollbackWorkflow()).build()); - return new DefaultWorkReport(WorkStatus.IN_PROGRESS, workContext, null); + return new DefaultWorkReport(WorkStatus.IN_PROGRESS, workContext); } @Override From 78c36f7891dd634376fe5f21efd523de7d43a6e8 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Wed, 14 Jun 2023 13:08:40 +0200 Subject: [PATCH 04/17] Add Move2KubeUtils Signed-off-by: Gloria Ciavarrini --- .../move2kube/utils/Move2KubeUtils.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java new file mode 100644 index 000000000..bbd169089 --- /dev/null +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java @@ -0,0 +1,21 @@ +package com.redhat.parodos.examples.move2kube.utils; + +import java.net.URI; +import java.net.URISyntaxException; + +/** + * @author Gloria Ciavarrini (Github: gciavarrini) + */ +public abstract class Move2KubeUtils { + + private Move2KubeUtils() { + } + + public static String getPath(String server, String workspaceID, String projectID, String outputID) + throws URISyntaxException { + String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); + URI baseUri = new URI(server); + return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); + } + +} From e8f4043182d670e05da6018795b14578312a5a84 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Wed, 14 Jun 2023 13:08:59 +0200 Subject: [PATCH 05/17] Use Move2KubeUtils.getPath() Signed-off-by: Gloria Ciavarrini --- .../examples/move2kube/task/Move2KubeTransform.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/task/Move2KubeTransform.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/task/Move2KubeTransform.java index f05956012..4cf56ad20 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/task/Move2KubeTransform.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/task/Move2KubeTransform.java @@ -1,9 +1,9 @@ package com.redhat.parodos.examples.move2kube.task; import java.io.IOException; -import java.net.URI; import java.net.URISyntaxException; +import com.redhat.parodos.examples.move2kube.utils.Move2KubeUtils; import com.redhat.parodos.workflow.task.infrastructure.Notifier; import com.redhat.parodos.workflow.utils.WorkContextUtils; import com.redhat.parodos.workflows.work.DefaultWorkReport; @@ -82,11 +82,8 @@ public WorkReport execute(WorkContext workContext) { } private boolean sendNotification(String userID, String workspaceID, String projectID, String outputID) { - String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); try { - URI baseUri = new URI(server); - URI url = new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null); - + String url = Move2KubeUtils.getPath(server, workspaceID, projectID, outputID); String message = String.format( "You need to complete some information for your transformation in the following [url](%s)", url); @@ -117,4 +114,4 @@ private void isPlanCreated(String workspaceID, String projectID) throws ApiExcep this.plan = response.toJson(); } -} \ No newline at end of file +} From e064dd095299eea6171f22745101f767d5b282e0 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Wed, 14 Jun 2023 13:16:16 +0200 Subject: [PATCH 06/17] Add user alert message to TransformChecker Signed-off-by: Gloria Ciavarrini --- workflow-examples/pom.xml | 6 ++++++ .../move2kube/checker/TransformChecker.java | 21 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/workflow-examples/pom.xml b/workflow-examples/pom.xml index c3a5910cf..c612749dc 100644 --- a/workflow-examples/pom.xml +++ b/workflow-examples/pom.xml @@ -23,6 +23,7 @@ 2.3.30 6.5.1 v1.0.3 + 1.3.1.1 @@ -132,6 +133,11 @@ 5.7.2 test + + net.steppschuh.markdowngenerator + markdowngenerator + ${markdowngenerator.version} + diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java index 304658a7b..e216de633 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java @@ -1,10 +1,12 @@ package com.redhat.parodos.examples.move2kube.checker; +import java.net.URISyntaxException; import java.util.Collections; import java.util.List; import java.util.Objects; import com.google.common.base.Strings; +import com.redhat.parodos.examples.move2kube.utils.Move2KubeUtils; import com.redhat.parodos.workflow.parameter.WorkParameter; import com.redhat.parodos.workflow.task.checker.BaseWorkFlowCheckerTask; import com.redhat.parodos.workflow.task.enums.WorkFlowTaskOutput; @@ -19,6 +21,7 @@ import dev.parodos.move2kube.client.model.ProjectOutputsValue; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import net.steppschuh.markdowngenerator.text.TextBuilder; @Slf4j public class TransformChecker extends BaseWorkFlowCheckerTask { @@ -32,9 +35,12 @@ public class TransformChecker extends BaseWorkFlowCheckerTask { @Getter protected static String projectContextKey = "move2KubeProjectID"; + private final String server; + public TransformChecker(String server) { client = new ApiClient(); client.setBasePath(server); + this.server = server; } @Override @@ -56,7 +62,8 @@ public WorkReport checkWorkFlowStatus(WorkContext workContext) { new IllegalArgumentException("Cannot get the project transformation output from the list")); } if (!Objects.equals(output.getStatus(), "done")) { - return new DefaultWorkReport(WorkStatus.FAILED, workContext); + return new DefaultWorkReport(WorkStatus.FAILED, workContext, + getMessage(server, workspaceID, projectID, transformID)); } } catch (ApiException e) { @@ -80,4 +87,16 @@ public List getWorkFlowTaskOutputs() { return Collections.emptyList(); } + private String getMessage(String server, String workspaceID, String projectID, String transformId) { + return new TextBuilder() + .heading("Alert", 1) + .newParagraph() + .text("You need to complete some information for your transformation") + .newLine() + .text("Please check this") + .link("link", Move2KubeUtils.getPath(server, workspaceID, projectID, transformId)) + .end() + .toString(); + } + } From 7397229c4bb9a11eff9ab43f92da74063529cf37 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Wed, 14 Jun 2023 15:54:25 +0200 Subject: [PATCH 07/17] Format Move2KubeUtils Signed-off-by: Gloria Ciavarrini --- .../move2kube/utils/Move2KubeUtils.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java index bbd169089..8557994cc 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java @@ -8,14 +8,18 @@ */ public abstract class Move2KubeUtils { - private Move2KubeUtils() { - } + private Move2KubeUtils() { + } - public static String getPath(String server, String workspaceID, String projectID, String outputID) - throws URISyntaxException { - String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); - URI baseUri = new URI(server); - return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); - } + public static String getPath(String server, String workspaceID, String projectID, String outputID) { + String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); + URI baseUri = null; + try { + baseUri = new URI(server); + return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); + } catch (URISyntaxException e) { + return null; + } + } } From 021f801405ad4bdf81cd6242933517886e7f86b0 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 08:15:25 +0200 Subject: [PATCH 08/17] Add entry in tables.xml Signed-off-by: Gloria Ciavarrini --- workflow-service/src/main/resources/db/changelog/tables.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/workflow-service/src/main/resources/db/changelog/tables.xml b/workflow-service/src/main/resources/db/changelog/tables.xml index 13285c415..d24816c04 100644 --- a/workflow-service/src/main/resources/db/changelog/tables.xml +++ b/workflow-service/src/main/resources/db/changelog/tables.xml @@ -160,6 +160,7 @@ + From 11818d2048dab852ee5e04a7fc5b32cc45a760ed Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 08:20:05 +0200 Subject: [PATCH 09/17] Add alertMessage field Signed-off-by: Gloria Ciavarrini --- .../parodos/workflows/work/DefaultWorkReport.java | 13 ------------- .../redhat/parodos/workflows/work/WorkReport.java | 5 +++++ .../workflows/workflow/ParallelFlowReport.java | 5 +++++ .../aspect/WorkFlowTaskExecutionAspect.java | 2 ++ .../execution/entity/WorkFlowExecution.java | 2 ++ .../execution/entity/WorkFlowTaskExecution.java | 2 ++ 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java index a0f84bf91..42dd5ec1a 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/DefaultWorkReport.java @@ -67,19 +67,6 @@ public DefaultWorkReport(WorkStatus status, WorkContext workContext, String aler this.alertMessage = alertMessage; } - /** - * Create a new {@link DefaultWorkReport}. - * @param status of work - * @param error if any - * @param message if any - */ - public DefaultWorkReport(WorkStatus status, WorkContext workContext, Throwable error, String message) { - this(status, workContext); - this.error = error; - this.message = message; - } - - public WorkStatus getStatus() { return status; } diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/WorkReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/WorkReport.java index 36c8eac9b..2fa4a3ac1 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/WorkReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/work/WorkReport.java @@ -50,4 +50,9 @@ public interface WorkReport { */ WorkContext getWorkContext(); + /** + * Get alert message if any. + */ + String getAlertMessage(); + } diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java index f9d3d152d..07b8d123d 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java @@ -139,4 +139,9 @@ public WorkContext getWorkContext() { return workContext; } + @Override + public String getAlertMessage() { + return null; + } + } diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/aspect/WorkFlowTaskExecutionAspect.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/aspect/WorkFlowTaskExecutionAspect.java index 93065dabb..253f5674d 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/aspect/WorkFlowTaskExecutionAspect.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/aspect/WorkFlowTaskExecutionAspect.java @@ -146,6 +146,8 @@ else if (WorkStatus.FAILED != workFlowTaskExecution.getStatus()) { if (report.getError() != null) { workFlowTaskExecution.setMessage(report.getError().getMessage()); } + + workFlowTaskExecution.setAlertMessage(report.getAlertMessage()); workFlowTaskExecution.setLastUpdateDate(new Date()); workFlowService.updateWorkFlowTask(workFlowTaskExecution); diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java index f10fbccc7..5065595cc 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java @@ -58,6 +58,8 @@ public class WorkFlowExecution extends AbstractEntity { private String message; + private String alertMessage; + @Column(updatable = false) private Date startDate; diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowTaskExecution.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowTaskExecution.java index 8efe8b1e5..810f81e95 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowTaskExecution.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowTaskExecution.java @@ -60,6 +60,8 @@ public class WorkFlowTaskExecution extends AbstractEntity { private String message; + private String alertMessage; + @Column(updatable = false) private Date startDate; From 7adb0c6c7a3097131d210883fe80f8842b93f23a Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 08:20:43 +0200 Subject: [PATCH 10/17] Refactor getPath Signed-off-by: Gloria Ciavarrini --- .../examples/move2kube/checker/TransformChecker.java | 8 +++++++- .../examples/move2kube/utils/Move2KubeUtils.java | 11 +++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java index e216de633..bb7563214 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java @@ -88,13 +88,19 @@ public List getWorkFlowTaskOutputs() { } private String getMessage(String server, String workspaceID, String projectID, String transformId) { + String path; + try { + path = Move2KubeUtils.getPath(server, workspaceID, projectID, transformId); + } catch (URISyntaxException e) { + path = "Cannot parse move2kube url " + server; + } return new TextBuilder() .heading("Alert", 1) .newParagraph() .text("You need to complete some information for your transformation") .newLine() .text("Please check this") - .link("link", Move2KubeUtils.getPath(server, workspaceID, projectID, transformId)) + .link("link", path) .end() .toString(); } diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java index 8557994cc..9d44b32a7 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java @@ -11,15 +11,10 @@ public abstract class Move2KubeUtils { private Move2KubeUtils() { } - public static String getPath(String server, String workspaceID, String projectID, String outputID) { + public static String getPath(String server, String workspaceID, String projectID, String outputID) throws URISyntaxException { String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); - URI baseUri = null; - try { - baseUri = new URI(server); - return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); - } catch (URISyntaxException e) { - return null; - } + URI baseUri = new URI(server); + return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); } } From cbdc5888ba6d915357d37eda3f8034d055cd55f6 Mon Sep 17 00:00:00 2001 From: Moti Asayag Date: Thu, 15 Jun 2023 10:34:32 +0300 Subject: [PATCH 11/17] Move alert_message to task-level Issue states the alert should be added at task level. Therefore, moved from prds_workflow_execution to prds_workflow_task_execution and related resources were updated accordingly to this change. Signed-off-by: Moti Asayag --- workflow-service/generated/openapi/openapi.json | 3 +++ .../parodos/workflow/execution/dto/WorkStatusResponseDTO.java | 2 ++ .../parodos/workflow/execution/entity/WorkFlowExecution.java | 2 -- .../workflow/execution/service/WorkFlowServiceDelegate.java | 4 +++- workflow-service/src/main/resources/db/changelog/tables.xml | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/workflow-service/generated/openapi/openapi.json b/workflow-service/generated/openapi/openapi.json index 7704fdfc7..ea14f3195 100644 --- a/workflow-service/generated/openapi/openapi.json +++ b/workflow-service/generated/openapi/openapi.json @@ -1728,6 +1728,9 @@ "WorkStatusResponseDTO" : { "type" : "object", "properties" : { + "alertMessage" : { + "type" : "string" + }, "message" : { "type" : "string" }, diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/dto/WorkStatusResponseDTO.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/dto/WorkStatusResponseDTO.java index f1a4c39c9..4f3a691e4 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/dto/WorkStatusResponseDTO.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/dto/WorkStatusResponseDTO.java @@ -49,6 +49,8 @@ public class WorkStatusResponseDTO { private String message; + private String alertMessage; + @JsonProperty("works") @JsonInclude(JsonInclude.Include.NON_EMPTY) private List works; diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java index 5065595cc..f10fbccc7 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/entity/WorkFlowExecution.java @@ -58,8 +58,6 @@ public class WorkFlowExecution extends AbstractEntity { private String message; - private String alertMessage; - @Column(updatable = false) private Date startDate; diff --git a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceDelegate.java b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceDelegate.java index 19ec12910..d0b3f408a 100644 --- a/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceDelegate.java +++ b/workflow-service/src/main/java/com/redhat/parodos/workflow/execution/service/WorkFlowServiceDelegate.java @@ -184,9 +184,11 @@ private WorkStatusResponseDTO getWorkStatusResponseDTOFromWorkFlowTask( WorkStatus workStatus = WorkStatus.PENDING; String message = null; + String alertMessage = null; if (workFlowTaskExecutionOptional.isPresent()) { message = workFlowTaskExecutionOptional.get().getMessage(); + alertMessage = workFlowTaskExecutionOptional.get().getAlertMessage(); workStatus = WorkStatus.valueOf(workFlowTaskExecutionOptional.get().getStatus().name()); if (workFlowTaskDefinition.getWorkFlowCheckerMappingDefinition() != null) { workStatus = Optional @@ -202,7 +204,7 @@ private WorkStatusResponseDTO getWorkStatusResponseDTOFromWorkFlowTask( } return WorkStatusResponseDTO.builder().name(workFlowTaskDefinition.getName()).type(WorkType.TASK) - .status(workStatus).message(message).build(); + .status(workStatus).message(message).alertMessage(alertMessage).build(); } private List nestWorkFlowWorksStatusDTO( diff --git a/workflow-service/src/main/resources/db/changelog/tables.xml b/workflow-service/src/main/resources/db/changelog/tables.xml index d24816c04..0195fbdec 100644 --- a/workflow-service/src/main/resources/db/changelog/tables.xml +++ b/workflow-service/src/main/resources/db/changelog/tables.xml @@ -160,7 +160,6 @@ - @@ -198,6 +197,7 @@ + From de444f7370bc0dc29cca778eb83e2b939ac21e5b Mon Sep 17 00:00:00 2001 From: Moti Asayag Date: Thu, 15 Jun 2023 11:01:14 +0300 Subject: [PATCH 12/17] Add generated SDK code Signed-off-by: Moti Asayag --- .../move2kube/checker/TransformChecker.java | 15 +++----- .../move2kube/utils/Move2KubeUtils.java | 15 ++++---- workflow-service-sdk/api/openapi.yaml | 9 ++++- .../docs/WorkStatusResponseDTO.md | 1 + .../sdk/model/WorkStatusResponseDTO.java | 38 ++++++++++++++++++- 5 files changed, 57 insertions(+), 21 deletions(-) diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java index bb7563214..931e1f4eb 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java @@ -91,18 +91,13 @@ private String getMessage(String server, String workspaceID, String projectID, S String path; try { path = Move2KubeUtils.getPath(server, workspaceID, projectID, transformId); - } catch (URISyntaxException e) { + } + catch (URISyntaxException e) { path = "Cannot parse move2kube url " + server; } - return new TextBuilder() - .heading("Alert", 1) - .newParagraph() - .text("You need to complete some information for your transformation") - .newLine() - .text("Please check this") - .link("link", path) - .end() - .toString(); + return new TextBuilder().heading("Alert", 1).newParagraph() + .text("You need to complete some information for your transformation").newLine() + .text("Please check this").link("link", path).end().toString(); } } diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java index 9d44b32a7..bbd169089 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java @@ -8,13 +8,14 @@ */ public abstract class Move2KubeUtils { - private Move2KubeUtils() { - } + private Move2KubeUtils() { + } - public static String getPath(String server, String workspaceID, String projectID, String outputID) throws URISyntaxException { - String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); - URI baseUri = new URI(server); - return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); - } + public static String getPath(String server, String workspaceID, String projectID, String outputID) + throws URISyntaxException { + String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); + URI baseUri = new URI(server); + return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); + } } diff --git a/workflow-service-sdk/api/openapi.yaml b/workflow-service-sdk/api/openapi.yaml index 96302d36b..779591a50 100644 --- a/workflow-service-sdk/api/openapi.yaml +++ b/workflow-service-sdk/api/openapi.yaml @@ -1553,14 +1553,16 @@ components: example: workFlowName: workFlowName works: - - works: + - alertMessage: alertMessage + works: - null - null name: name message: message type: TASK status: FAILED - - works: + - alertMessage: alertMessage + works: - null - null name: name @@ -1650,6 +1652,7 @@ components: type: object WorkStatusResponseDTO: example: + alertMessage: alertMessage works: - null - null @@ -1658,6 +1661,8 @@ components: type: TASK status: FAILED properties: + alertMessage: + type: string message: type: string name: diff --git a/workflow-service-sdk/docs/WorkStatusResponseDTO.md b/workflow-service-sdk/docs/WorkStatusResponseDTO.md index 62f70f7fb..97a45a254 100644 --- a/workflow-service-sdk/docs/WorkStatusResponseDTO.md +++ b/workflow-service-sdk/docs/WorkStatusResponseDTO.md @@ -7,6 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| +|**alertMessage** | **String** | | [optional] | |**message** | **String** | | [optional] | |**name** | **String** | | [optional] | |**status** | [**StatusEnum**](#StatusEnum) | | [optional] | diff --git a/workflow-service-sdk/src/main/java/com/redhat/parodos/sdk/model/WorkStatusResponseDTO.java b/workflow-service-sdk/src/main/java/com/redhat/parodos/sdk/model/WorkStatusResponseDTO.java index 68c6cd847..e58107e60 100644 --- a/workflow-service-sdk/src/main/java/com/redhat/parodos/sdk/model/WorkStatusResponseDTO.java +++ b/workflow-service-sdk/src/main/java/com/redhat/parodos/sdk/model/WorkStatusResponseDTO.java @@ -39,6 +39,11 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class WorkStatusResponseDTO { + public static final String SERIALIZED_NAME_ALERT_MESSAGE = "alertMessage"; + + @SerializedName(SERIALIZED_NAME_ALERT_MESSAGE) + private String alertMessage; + public static final String SERIALIZED_NAME_MESSAGE = "message"; @SerializedName(SERIALIZED_NAME_MESSAGE) @@ -175,6 +180,26 @@ public TypeEnum read(final JsonReader jsonReader) throws IOException { public WorkStatusResponseDTO() { } + public WorkStatusResponseDTO alertMessage(String alertMessage) { + + this.alertMessage = alertMessage; + return this; + } + + /** + * Get alertMessage + * @return alertMessage + **/ + @javax.annotation.Nullable + + public String getAlertMessage() { + return alertMessage; + } + + public void setAlertMessage(String alertMessage) { + this.alertMessage = alertMessage; + } + public WorkStatusResponseDTO message(String message) { this.message = message; @@ -292,7 +317,8 @@ public boolean equals(Object o) { return false; } WorkStatusResponseDTO workStatusResponseDTO = (WorkStatusResponseDTO) o; - return Objects.equals(this.message, workStatusResponseDTO.message) + return Objects.equals(this.alertMessage, workStatusResponseDTO.alertMessage) + && Objects.equals(this.message, workStatusResponseDTO.message) && Objects.equals(this.name, workStatusResponseDTO.name) && Objects.equals(this.status, workStatusResponseDTO.status) && Objects.equals(this.type, workStatusResponseDTO.type) @@ -301,13 +327,14 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(message, name, status, type, works); + return Objects.hash(alertMessage, message, name, status, type, works); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class WorkStatusResponseDTO {\n"); + sb.append(" alertMessage: ").append(toIndentedString(alertMessage)).append("\n"); sb.append(" message: ").append(toIndentedString(message)).append("\n"); sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" status: ").append(toIndentedString(status)).append("\n"); @@ -335,6 +362,7 @@ private String toIndentedString(Object o) { static { // a set of all properties/fields (JSON key names) openapiFields = new HashSet(); + openapiFields.add("alertMessage"); openapiFields.add("message"); openapiFields.add("name"); openapiFields.add("status"); @@ -372,6 +400,12 @@ public static void validateJsonObject(JsonObject jsonObj) throws IOException { entry.getKey(), jsonObj.toString())); } } + if ((jsonObj.get("alertMessage") != null && !jsonObj.get("alertMessage").isJsonNull()) + && !jsonObj.get("alertMessage").isJsonPrimitive()) { + throw new IllegalArgumentException(String.format( + "Expected the field `alertMessage` to be a primitive type in the JSON string but got `%s`", + jsonObj.get("alertMessage").toString())); + } if ((jsonObj.get("message") != null && !jsonObj.get("message").isJsonNull()) && !jsonObj.get("message").isJsonPrimitive()) { throw new IllegalArgumentException( From 2b6adcf605473a4e010da6850390a8fc969dbb3d Mon Sep 17 00:00:00 2001 From: Moti Asayag Date: Thu, 15 Jun 2023 11:58:57 +0300 Subject: [PATCH 13/17] Add tests for alert message via API Signed-off-by: Moti Asayag --- .../FailedWithAlertMessageWorkFlowTest.java | 99 +++++++++++++++++++ .../PendingWithAlertMessageWorkFlowTest.java | 99 +++++++++++++++++++ ...WithAlertMessageWorkFlowConfiguration.java | 41 ++++++++ ...WithAlertMessageWorkFlowConfiguration.java | 41 ++++++++ .../simple/task/DoNothingWorkFlowTask.java | 22 +++++ .../FailedWithAlertMessageWorkFlowTask.java | 22 +++++ .../PendingWithAlertMessageWorkFlowTask.java | 22 +++++ 7 files changed, 346 insertions(+) create mode 100644 integration-tests/src/test/java/com/redhat/parodos/flows/negative/FailedWithAlertMessageWorkFlowTest.java create mode 100644 integration-tests/src/test/java/com/redhat/parodos/flows/negative/PendingWithAlertMessageWorkFlowTest.java create mode 100644 workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/FailedWithAlertMessageWorkFlowConfiguration.java create mode 100644 workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/PendingWithAlertMessageWorkFlowConfiguration.java create mode 100644 workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/DoNothingWorkFlowTask.java create mode 100644 workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/FailedWithAlertMessageWorkFlowTask.java create mode 100644 workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/PendingWithAlertMessageWorkFlowTask.java diff --git a/integration-tests/src/test/java/com/redhat/parodos/flows/negative/FailedWithAlertMessageWorkFlowTest.java b/integration-tests/src/test/java/com/redhat/parodos/flows/negative/FailedWithAlertMessageWorkFlowTest.java new file mode 100644 index 000000000..c3582e1fd --- /dev/null +++ b/integration-tests/src/test/java/com/redhat/parodos/flows/negative/FailedWithAlertMessageWorkFlowTest.java @@ -0,0 +1,99 @@ +package com.redhat.parodos.flows.negative; + +import java.util.function.Consumer; + +import com.redhat.parodos.flows.common.WorkFlowTestBuilder; +import com.redhat.parodos.flows.common.WorkFlowTestBuilder.TestComponents; +import com.redhat.parodos.sdk.api.WorkflowApi; +import com.redhat.parodos.sdk.invoker.ApiException; +import com.redhat.parodos.sdk.model.WorkDefinitionResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowDefinitionResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowDefinitionResponseDTO.ProcessingTypeEnum; +import com.redhat.parodos.sdk.model.WorkFlowDefinitionResponseDTO.TypeEnum; +import com.redhat.parodos.sdk.model.WorkFlowExecutionResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowExecutionResponseDTO.WorkStatusEnum; +import com.redhat.parodos.sdk.model.WorkFlowRequestDTO; +import com.redhat.parodos.sdk.model.WorkFlowStatusResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowStatusResponseDTO.StatusEnum; +import com.redhat.parodos.sdk.model.WorkStatusResponseDTO; +import com.redhat.parodos.sdkutils.WorkFlowServiceUtils; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +@Slf4j +public class FailedWithAlertMessageWorkFlowTest { + + private static final String WORKFLOW_NAME = "failedWithAlertMessageWorkFlow"; + + @Test + public void runSequentialFailedWorkFlow() throws ApiException { + log.info("******** Running The FailedWithAlertMessageWorkFlow ********"); + TestComponents components = new WorkFlowTestBuilder().withDefaultProject() + .withWorkFlowDefinition(WORKFLOW_NAME, getWorkFlowDefinitionResponseConsumer()).build(); + + WorkFlowRequestDTO workFlowRequestDTO = new WorkFlowRequestDTO(); + workFlowRequestDTO.setProjectId(components.project().getId()); + workFlowRequestDTO.setWorkFlowName(WORKFLOW_NAME); + + log.info("executes 2 tasks that should end with failed status and alert message"); + WorkflowApi workflowApi = new WorkflowApi(components.apiClient()); + WorkFlowExecutionResponseDTO workFlowResponseDTO = workflowApi.execute(workFlowRequestDTO); + + assertThat(workFlowResponseDTO.getWorkFlowExecutionId()).isNotNull(); + assertThat(workFlowResponseDTO.getWorkStatus()).isEqualTo(WorkStatusEnum.IN_PROGRESS); + + log.info("FailedWithAlertMessageWorkFlow execution id: {}", workFlowResponseDTO.getWorkFlowExecutionId()); + + WorkFlowStatusResponseDTO workFlowStatusResponseDTO = WorkFlowServiceUtils.waitWorkflowStatusAsync(workflowApi, + workFlowResponseDTO.getWorkFlowExecutionId(), StatusEnum.FAILED); + + assertThat(workFlowStatusResponseDTO.getWorkFlowExecutionId()).isNotNull(); + assertThat(workFlowStatusResponseDTO.getStatus()).isEqualTo(StatusEnum.FAILED); + assertThat(workFlowStatusResponseDTO.getMessage()).isNull(); + + // verify the task status and message + assertThat(workFlowStatusResponseDTO.getWorks()).isNotNull(); + assertThat(workFlowStatusResponseDTO.getWorks()).hasSize(2); + + // first task - doNothingWorkFlowTask (fetched in reversed order) + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getName()).isEqualTo("doNothingAgainWorkFlowTask"); + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getStatus()) + .isEqualTo(WorkStatusResponseDTO.StatusEnum.COMPLETED); + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getMessage()).isNull(); + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getAlertMessage()).isNull(); + + // second task - failedWithAlertMessageWorkFlowTask + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getName()) + .isEqualTo("failedWithAlertMessageWorkFlowTask"); + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getStatus()) + .isEqualTo(WorkStatusResponseDTO.StatusEnum.FAILED); + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getMessage()).isNull(); + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getAlertMessage()) + .isEqualTo("[link](http://localhost:8080)"); + + log.info("******** FailedWithAlertMessageWorkFlow successfully ended: {} ********", + workFlowStatusResponseDTO.getStatus()); + } + + private static Consumer getWorkFlowDefinitionResponseConsumer() { + return workFlowDefinition -> { + assertThat(workFlowDefinition.getId()).isNotNull(); + assertThat(WORKFLOW_NAME).isEqualTo(workFlowDefinition.getName()); + assertThat(workFlowDefinition.getProcessingType()).isEqualTo(ProcessingTypeEnum.SEQUENTIAL); + assertThat(workFlowDefinition.getType()).isEqualTo(TypeEnum.INFRASTRUCTURE); + + assertThat(workFlowDefinition.getWorks()).isNotNull(); + assertThat(workFlowDefinition.getWorks()).hasSize(2); + assertThat(workFlowDefinition.getWorks().get(1).getName()).isEqualTo("doNothingAgainWorkFlowTask"); + assertThat(workFlowDefinition.getWorks().get(1).getWorkType()) + .isEqualTo(WorkDefinitionResponseDTO.WorkTypeEnum.TASK); + assertThat(workFlowDefinition.getWorks().get(1).getWorks()).isNullOrEmpty(); + assertThat(workFlowDefinition.getWorks().get(1).getProcessingType()).isNull(); + assertThat(workFlowDefinition.getWorks().get(1).getParameters()).isNotNull(); + assertThat(workFlowDefinition.getWorks().get(0).getName()).isEqualTo("failedWithAlertMessageWorkFlowTask"); + }; + } + +} diff --git a/integration-tests/src/test/java/com/redhat/parodos/flows/negative/PendingWithAlertMessageWorkFlowTest.java b/integration-tests/src/test/java/com/redhat/parodos/flows/negative/PendingWithAlertMessageWorkFlowTest.java new file mode 100644 index 000000000..30b79b05f --- /dev/null +++ b/integration-tests/src/test/java/com/redhat/parodos/flows/negative/PendingWithAlertMessageWorkFlowTest.java @@ -0,0 +1,99 @@ +package com.redhat.parodos.flows.negative; + +import java.util.function.Consumer; + +import com.redhat.parodos.flows.common.WorkFlowTestBuilder; +import com.redhat.parodos.flows.common.WorkFlowTestBuilder.TestComponents; +import com.redhat.parodos.sdk.api.WorkflowApi; +import com.redhat.parodos.sdk.invoker.ApiException; +import com.redhat.parodos.sdk.model.WorkDefinitionResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowDefinitionResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowDefinitionResponseDTO.ProcessingTypeEnum; +import com.redhat.parodos.sdk.model.WorkFlowDefinitionResponseDTO.TypeEnum; +import com.redhat.parodos.sdk.model.WorkFlowExecutionResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowExecutionResponseDTO.WorkStatusEnum; +import com.redhat.parodos.sdk.model.WorkFlowRequestDTO; +import com.redhat.parodos.sdk.model.WorkFlowStatusResponseDTO; +import com.redhat.parodos.sdk.model.WorkFlowStatusResponseDTO.StatusEnum; +import com.redhat.parodos.sdk.model.WorkStatusResponseDTO; +import com.redhat.parodos.sdkutils.WorkFlowServiceUtils; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +@Slf4j +public class PendingWithAlertMessageWorkFlowTest { + + private static final String WORKFLOW_NAME = "pendingWithAlertMessageWorkFlow"; + + @Test + public void runSequentialFailedWorkFlow() throws ApiException { + log.info("******** Running The PendingWithAlertMessageWorkFlow ********"); + TestComponents components = new WorkFlowTestBuilder().withDefaultProject() + .withWorkFlowDefinition(WORKFLOW_NAME, getWorkFlowDefinitionResponseConsumer()).build(); + + WorkFlowRequestDTO workFlowRequestDTO = new WorkFlowRequestDTO(); + workFlowRequestDTO.setProjectId(components.project().getId()); + workFlowRequestDTO.setWorkFlowName(WORKFLOW_NAME); + + log.info("executes 2 tasks that should end with pending status and alert message"); + WorkflowApi workflowApi = new WorkflowApi(components.apiClient()); + WorkFlowExecutionResponseDTO workFlowResponseDTO = workflowApi.execute(workFlowRequestDTO); + + assertThat(workFlowResponseDTO.getWorkFlowExecutionId()).isNotNull(); + assertThat(workFlowResponseDTO.getWorkStatus()).isEqualTo(WorkStatusEnum.IN_PROGRESS); + + log.info("PendingWithAlertMessageWorkFlow execution id: {}", workFlowResponseDTO.getWorkFlowExecutionId()); + + WorkFlowStatusResponseDTO workFlowStatusResponseDTO = WorkFlowServiceUtils.waitWorkflowStatusAsync(workflowApi, + workFlowResponseDTO.getWorkFlowExecutionId(), StatusEnum.PENDING); + + assertThat(workFlowStatusResponseDTO.getWorkFlowExecutionId()).isNotNull(); + assertThat(workFlowStatusResponseDTO.getStatus()).isEqualTo(StatusEnum.PENDING); + assertThat(workFlowStatusResponseDTO.getMessage()).isNull(); + + // verify the task status and message + assertThat(workFlowStatusResponseDTO.getWorks()).isNotNull(); + assertThat(workFlowStatusResponseDTO.getWorks()).hasSize(2); + + // first task - doNothingWorkFlowTask (fetched in reversed order) + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getName()).isEqualTo("doNothingWorkFlowTask"); + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getStatus()) + .isEqualTo(WorkStatusResponseDTO.StatusEnum.COMPLETED); + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getMessage()).isNull(); + assertThat(workFlowStatusResponseDTO.getWorks().get(1).getAlertMessage()).isNull(); + + // second task - pendingWithAlertMessageWorkFlowTask + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getName()) + .isEqualTo("pendingWithAlertMessageWorkFlowTask"); + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getStatus()) + .isEqualTo(WorkStatusResponseDTO.StatusEnum.PENDING); + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getMessage()).isNull(); + assertThat(workFlowStatusResponseDTO.getWorks().get(0).getAlertMessage()) + .isEqualTo("[link](http://localhost:8080)"); + + log.info("******** PendingWithAlertMessageWorkFlow successfully ended: {} ********", + workFlowStatusResponseDTO.getStatus()); + } + + private static Consumer getWorkFlowDefinitionResponseConsumer() { + return workFlowDefinition -> { + assertThat(workFlowDefinition.getId()).isNotNull(); + assertThat(WORKFLOW_NAME).isEqualTo(workFlowDefinition.getName()); + assertThat(workFlowDefinition.getProcessingType()).isEqualTo(ProcessingTypeEnum.SEQUENTIAL); + assertThat(workFlowDefinition.getType()).isEqualTo(TypeEnum.INFRASTRUCTURE); + + assertThat(workFlowDefinition.getWorks()).isNotNull(); + assertThat(workFlowDefinition.getWorks()).hasSize(2); + assertThat(workFlowDefinition.getWorks().get(1).getName()).isEqualTo("doNothingWorkFlowTask"); + assertThat(workFlowDefinition.getWorks().get(1).getWorkType()) + .isEqualTo(WorkDefinitionResponseDTO.WorkTypeEnum.TASK); + assertThat(workFlowDefinition.getWorks().get(1).getWorks()).isNullOrEmpty(); + assertThat(workFlowDefinition.getWorks().get(1).getProcessingType()).isNull(); + assertThat(workFlowDefinition.getWorks().get(1).getParameters()).isNotNull(); + assertThat(workFlowDefinition.getWorks().get(0).getName()).isEqualTo("pendingWithAlertMessageWorkFlowTask"); + }; + } + +} diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/FailedWithAlertMessageWorkFlowConfiguration.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/FailedWithAlertMessageWorkFlowConfiguration.java new file mode 100644 index 000000000..611e6a600 --- /dev/null +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/FailedWithAlertMessageWorkFlowConfiguration.java @@ -0,0 +1,41 @@ +package com.redhat.parodos.examples.negative.simple; + +import com.redhat.parodos.examples.negative.simple.task.DoNothingWorkFlowTask; +import com.redhat.parodos.examples.negative.simple.task.FailedWithAlertMessageWorkFlowTask; +import com.redhat.parodos.workflow.annotation.Infrastructure; +import com.redhat.parodos.workflows.workflow.SequentialFlow; +import com.redhat.parodos.workflows.workflow.WorkFlow; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FailedWithAlertMessageWorkFlowConfiguration { + + @Bean + FailedWithAlertMessageWorkFlowTask FailedWithAlertMessageWorkFlowTask() { + return new FailedWithAlertMessageWorkFlowTask(); + } + + @Bean(name = "doNothingAgainWorkFlowTask") + DoNothingWorkFlowTask doNothingWorkFlowTask() { + return new DoNothingWorkFlowTask(); + } + + @Bean(name = "failedWithAlertMessageWorkFlow") + @Infrastructure + WorkFlow failedWithAlertMessageWorkFlow( + @Qualifier("failedWithAlertMessageWorkFlowTask") FailedWithAlertMessageWorkFlowTask failedWithAlertMessageWorkFlowTask, + @Qualifier("doNothingAgainWorkFlowTask") DoNothingWorkFlowTask doNothingWorkFlowTask) { + // @formatter:off + return SequentialFlow + .Builder.aNewSequentialFlow() + .named("failedWithAlertMessageWorkFlow") + .execute(doNothingWorkFlowTask) + .then(failedWithAlertMessageWorkFlowTask) + .build(); + // @formatter:on + } + +} diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/PendingWithAlertMessageWorkFlowConfiguration.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/PendingWithAlertMessageWorkFlowConfiguration.java new file mode 100644 index 000000000..b9688d307 --- /dev/null +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/PendingWithAlertMessageWorkFlowConfiguration.java @@ -0,0 +1,41 @@ +package com.redhat.parodos.examples.negative.simple; + +import com.redhat.parodos.examples.negative.simple.task.DoNothingWorkFlowTask; +import com.redhat.parodos.examples.negative.simple.task.PendingWithAlertMessageWorkFlowTask; +import com.redhat.parodos.workflow.annotation.Infrastructure; +import com.redhat.parodos.workflows.workflow.SequentialFlow; +import com.redhat.parodos.workflows.workflow.WorkFlow; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class PendingWithAlertMessageWorkFlowConfiguration { + + @Bean + PendingWithAlertMessageWorkFlowTask pendingWithAlertMessageWorkFlowTask() { + return new PendingWithAlertMessageWorkFlowTask(); + } + + @Bean + DoNothingWorkFlowTask doNothingWorkFlowTask() { + return new DoNothingWorkFlowTask(); + } + + @Bean(name = "pendingWithAlertMessageWorkFlow") + @Infrastructure + WorkFlow pendingWithAlertMessageWorkFlow( + @Qualifier("pendingWithAlertMessageWorkFlowTask") PendingWithAlertMessageWorkFlowTask pendingWithAlertMessageWorkFlowTask, + @Qualifier("doNothingWorkFlowTask") DoNothingWorkFlowTask doNothingWorkFlowTask) { + // @formatter:off + return SequentialFlow + .Builder.aNewSequentialFlow() + .named("pendingWithAlertMessageWorkFlow") + .execute(doNothingWorkFlowTask) + .then(pendingWithAlertMessageWorkFlowTask) + .build(); + // @formatter:on + } + +} diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/DoNothingWorkFlowTask.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/DoNothingWorkFlowTask.java new file mode 100644 index 000000000..6b6e425cb --- /dev/null +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/DoNothingWorkFlowTask.java @@ -0,0 +1,22 @@ +package com.redhat.parodos.examples.negative.simple.task; + +import com.redhat.parodos.workflow.task.infrastructure.BaseInfrastructureWorkFlowTask; +import com.redhat.parodos.workflows.work.DefaultWorkReport; +import com.redhat.parodos.workflows.work.WorkContext; +import com.redhat.parodos.workflows.work.WorkReport; +import com.redhat.parodos.workflows.work.WorkStatus; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class DoNothingWorkFlowTask extends BaseInfrastructureWorkFlowTask { + + @Override + public WorkReport execute(WorkContext workContext) { + log.info("DoNothingWorkFlowTask execution should return COMPLETE"); + return new DefaultWorkReport(WorkStatus.COMPLETED, workContext); + } + +} diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/FailedWithAlertMessageWorkFlowTask.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/FailedWithAlertMessageWorkFlowTask.java new file mode 100644 index 000000000..e4521def5 --- /dev/null +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/FailedWithAlertMessageWorkFlowTask.java @@ -0,0 +1,22 @@ +package com.redhat.parodos.examples.negative.simple.task; + +import com.redhat.parodos.workflow.task.infrastructure.BaseInfrastructureWorkFlowTask; +import com.redhat.parodos.workflows.work.DefaultWorkReport; +import com.redhat.parodos.workflows.work.WorkContext; +import com.redhat.parodos.workflows.work.WorkReport; +import com.redhat.parodos.workflows.work.WorkStatus; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class FailedWithAlertMessageWorkFlowTask extends BaseInfrastructureWorkFlowTask { + + @Override + public WorkReport execute(WorkContext workContext) { + log.info("FailedWithAlertMessageWorkFlowTask execution should return FAILED"); + return new DefaultWorkReport(WorkStatus.FAILED, workContext, "[link](http://localhost:8080)"); + } + +} diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/PendingWithAlertMessageWorkFlowTask.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/PendingWithAlertMessageWorkFlowTask.java new file mode 100644 index 000000000..81b863895 --- /dev/null +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/negative/simple/task/PendingWithAlertMessageWorkFlowTask.java @@ -0,0 +1,22 @@ +package com.redhat.parodos.examples.negative.simple.task; + +import com.redhat.parodos.workflow.task.infrastructure.BaseInfrastructureWorkFlowTask; +import com.redhat.parodos.workflows.work.DefaultWorkReport; +import com.redhat.parodos.workflows.work.WorkContext; +import com.redhat.parodos.workflows.work.WorkReport; +import com.redhat.parodos.workflows.work.WorkStatus; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class PendingWithAlertMessageWorkFlowTask extends BaseInfrastructureWorkFlowTask { + + @Override + public WorkReport execute(WorkContext workContext) { + log.info("FailedWithAlertMessageWorkFlowTask execution should return PENDING"); + return new DefaultWorkReport(WorkStatus.PENDING, workContext, "[link](http://localhost:8080)"); + } + +} From 79ca2e2f05bd06dbad2d788c4d1b8c5e2a5021d4 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 12:15:07 +0200 Subject: [PATCH 14/17] Return last alertMessage in parallel flow report Signed-off-by: Gloria Ciavarrini --- .../parodos/workflows/workflow/ParallelFlowReport.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java b/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java index 07b8d123d..d81f56c88 100644 --- a/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java +++ b/workflow-engine/src/main/java/com/redhat/parodos/workflows/workflow/ParallelFlowReport.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import com.redhat.parodos.workflows.work.WorkContext; import com.redhat.parodos.workflows.work.WorkReport; @@ -139,9 +140,16 @@ public WorkContext getWorkContext() { return workContext; } + /** + * Return the last alertMessage of partial reports, or null if there are no + * alertMessage. + * @return the last alertMessage + */ + @Override public String getAlertMessage() { - return null; + return reports.stream().map(WorkReport::getAlertMessage).filter(Objects::nonNull) + .reduce((first, second) -> second).orElse(null); } } From 875a7d15075f81d90e30ead356e018284034700f Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 12:35:06 +0200 Subject: [PATCH 15/17] Add test for getAlertMessage in ParallelFlowReport Signed-off-by: Gloria Ciavarrini --- .../workflow/ParallelFlowReportTest.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/workflow-engine/src/test/java/com/redhat/parodos/workflows/workflow/ParallelFlowReportTest.java b/workflow-engine/src/test/java/com/redhat/parodos/workflows/workflow/ParallelFlowReportTest.java index c1c50f23b..2e1478934 100644 --- a/workflow-engine/src/test/java/com/redhat/parodos/workflows/workflow/ParallelFlowReportTest.java +++ b/workflow-engine/src/test/java/com/redhat/parodos/workflows/workflow/ParallelFlowReportTest.java @@ -47,19 +47,19 @@ public void setUp() { WorkContext workContext = new WorkContext(); completedParallelFlowReport = new ParallelFlowReport(); - completedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext)); - completedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext)); + completedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext, "alertMessage_1")); + completedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext, "alertMessage_2")); failedParallelFlowReport = new ParallelFlowReport(); failedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.FAILED, workContext, exception)); - failedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext)); + failedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext, "alertMessage_1")); failedParallelFlowReport.add(new DefaultWorkReport(WorkStatus.IN_PROGRESS, workContext)); progressParallelFlowReport = new ParallelFlowReport(); - progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext)); - progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext)); + progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext, "alertMessage_1")); + progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext, "alertMessage_2")); progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.IN_PROGRESS, workContext)); - progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext)); + progressParallelFlowReport.add(new DefaultWorkReport(WorkStatus.COMPLETED, workContext, "alertMessage_3")); } @Test @@ -81,4 +81,11 @@ public void testGetReports() { assertThat(progressParallelFlowReport.getReports()).hasSize(4); } + @Test + public void testGetAlertMessage() { + assertThat(completedParallelFlowReport.getAlertMessage()).isEqualTo("alertMessage_2"); + assertThat(failedParallelFlowReport.getAlertMessage()).isEqualTo("alertMessage_1"); + assertThat(progressParallelFlowReport.getAlertMessage()).isEqualTo("alertMessage_3"); + } + } From d2bf7f01b5999c961c774e4efd47482913a40547 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 12:35:32 +0200 Subject: [PATCH 16/17] Add test form Move2KubeUtils.getPath method Signed-off-by: Gloria Ciavarrini --- .../redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java index bbd169089..098dbd859 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/utils/Move2KubeUtils.java @@ -13,7 +13,7 @@ private Move2KubeUtils() { public static String getPath(String server, String workspaceID, String projectID, String outputID) throws URISyntaxException { - String path = String.format("/workspaces/%s/projects/%s/outputs/%s", workspaceID, projectID, outputID); + String path = "/workspaces/%s/projects/%s/outputs/%s".formatted(workspaceID, projectID, outputID); URI baseUri = new URI(server); return new URI(baseUri.getScheme(), baseUri.getAuthority(), path, null, null).getPath(); } From 55fa208f3b707d4c8d82d33e35e2a432c860bdd6 Mon Sep 17 00:00:00 2001 From: Gloria Ciavarrini Date: Thu, 15 Jun 2023 12:38:44 +0200 Subject: [PATCH 17/17] Fix: remove redundant argument from getMessage() Signed-off-by: Gloria Ciavarrini --- .../examples/move2kube/checker/TransformChecker.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java index 931e1f4eb..72eb94eba 100644 --- a/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java +++ b/workflow-examples/src/main/java/com/redhat/parodos/examples/move2kube/checker/TransformChecker.java @@ -63,7 +63,7 @@ public WorkReport checkWorkFlowStatus(WorkContext workContext) { } if (!Objects.equals(output.getStatus(), "done")) { return new DefaultWorkReport(WorkStatus.FAILED, workContext, - getMessage(server, workspaceID, projectID, transformID)); + getMessage(workspaceID, projectID, transformID)); } } catch (ApiException e) { @@ -87,10 +87,10 @@ public List getWorkFlowTaskOutputs() { return Collections.emptyList(); } - private String getMessage(String server, String workspaceID, String projectID, String transformId) { + private String getMessage(String workspaceID, String projectID, String transformId) { String path; try { - path = Move2KubeUtils.getPath(server, workspaceID, projectID, transformId); + path = Move2KubeUtils.getPath(this.server, workspaceID, projectID, transformId); } catch (URISyntaxException e) { path = "Cannot parse move2kube url " + server;