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";
 

Reply via email to