This is an automated email from the ASF dual-hosted git repository. heneveld pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit 49ec5dce051547d42f1f221e82a3bd4ac3bb0016 Author: Alex Heneveld <[email protected]> AuthorDate: Mon Mar 20 11:35:18 2023 +0000 also allow brooklyn DSL inputs to be supplied via the UI "Run Workflow" modal --- .../brooklyn/rest/resources/EntityResource.java | 3 +++ .../rest/resources/EntityWorkflowsRestTest.java | 27 +++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java index f74e342f2e..683e5ae379 100644 --- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java +++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java @@ -28,6 +28,8 @@ import com.google.common.io.Files; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.mgmt.Task; +import org.apache.brooklyn.camp.brooklyn.spi.dsl.DslUtils; +import org.apache.brooklyn.camp.brooklyn.spi.dsl.parse.DslParser; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.mgmt.BrooklynTags; import org.apache.brooklyn.core.mgmt.BrooklynTags.NamedStringTag; @@ -458,6 +460,7 @@ public class EntityResource extends AbstractBrooklynRestResource implements Enti try { workflow = BeanWithTypeUtils.newYamlMapper(mgmt(), true, RegisteredTypes.getClassLoadingContext(target), true) .readerFor(CustomWorkflowStep.class).readValue(yaml); + if (workflow.getInput()!=null) workflow.setInput((Map) DslUtils.parseBrooklynDsl(mgmt(), workflow.getInput())); } catch (JsonProcessingException e) { throw WebResourceUtils.badRequest(e); } diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityWorkflowsRestTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityWorkflowsRestTest.java index cdd2b67879..0ba0f60a81 100644 --- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityWorkflowsRestTest.java +++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityWorkflowsRestTest.java @@ -42,6 +42,7 @@ import org.apache.brooklyn.rest.domain.TaskSummary; import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.test.ClassLogWatcher; +import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.config.ConfigBag; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.http.HttpAsserts; @@ -134,11 +135,31 @@ public class EntityWorkflowsRestTest extends BrooklynRestResourceTest { Asserts.assertEquals(wf2.getStatus(), WorkflowExecutionContext.WorkflowStatus.SUCCESS); } - @Test(groups="Integration") // because slow - public void testWorkflowApiTimeouts() { + @Test + public void testWorkflowInputs() { String wf = "input:\n" + - " password1: PASSWORD\n" + + " literal: LIT_VAL\n" + + " dsl_ref: $brooklyn:entityId()\n" + "steps:\n" + + " - type: return\n" + + " value:\n" + + " p: ${literal}\n" + + " v: ${dsl_ref}\n"+ + ""; + + Response response = client().path("/applications/"+entity.getApplicationId()+"/entities/"+entity.getId()+"/workflows") + .query("timeout", "5s") + .header(HttpHeaders.CONTENT_TYPE, "text/yaml") + .accept(MediaType.APPLICATION_JSON).post(wf); + assertHealthy(response); + TaskSummary task = response.readEntity(TaskSummary.class); + + Asserts.assertNotNull(task.getEndTimeUtc()); + Asserts.assertEquals(task.getResult(), MutableMap.of("p", "LIT_VAL", "v", entity.getId())); + } + + public void testWorkflowApiTimeouts() { + String wf = "steps:\n" + " - sleep 500ms\n"+ " - return done\n";
