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


The following commit(s) were added to refs/heads/master by this push:
     new b9febc09db expose ability for workflow policy to be invoked
b9febc09db is described below

commit b9febc09dbcec2f4bad2824616a6ab910a7e20ed
Author: Alex Heneveld <a...@cloudsoft.io>
AuthorDate: Mon Apr 29 12:51:34 2024 +0100

    expose ability for workflow policy to be invoked
---
 .../org/apache/brooklyn/core/workflow/WorkflowPolicy.java | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java 
b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java
index 2baefe05e1..1d2c9db914 100644
--- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java
+++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java
@@ -29,6 +29,8 @@ import org.apache.brooklyn.core.feed.PollHandler;
 import org.apache.brooklyn.core.feed.Poller;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
 import org.apache.brooklyn.core.sensor.AbstractAddTriggerableSensor;
+import 
org.apache.brooklyn.core.workflow.WorkflowExecutionContext.WorkflowContextType;
+import org.apache.brooklyn.core.workflow.WorkflowSensor.WorkflowPollCallable;
 import org.apache.brooklyn.util.collections.MutableSet;
 import org.apache.brooklyn.util.core.predicates.DslPredicates;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -62,6 +64,7 @@ public class WorkflowPolicy<T> extends AbstractPolicy 
implements WorkflowCommonC
     public static final ConfigKey<String> UNIQUE_TAG_DASH = 
WorkflowSensor.UNIQUE_TAG_DASH;
 
     protected transient Poller<Object> poller;
+    protected transient WorkflowPollCallable pollCallable;
 
     // ? - do we need to have an option not to run when added?
 
@@ -143,8 +146,8 @@ public class WorkflowPolicy<T> extends AbstractPolicy 
implements WorkflowCommonC
                 .condition(new ConditionSupplierFromAdjunct());
 
         Set<PollConfig> pollConfigs = MutableSet.of(pc);
-        poller.schedulePoll(this, pollConfigs, new 
WorkflowSensor.WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType.POLICY,
-                getDisplayName() + " (policy)", config().getBag(), this), new 
PolicyNoOpPollHandler());
+        pollCallable = new WorkflowPollCallable(WorkflowContextType.POLICY, 
getDisplayName() + " (policy)", config().getBag(), this);
+        poller.schedulePoll(this, pollConfigs, pollCallable, new 
PolicyNoOpPollHandler());
 
         if (!isSuspended()) resume();
     }
@@ -163,5 +166,13 @@ public class WorkflowPolicy<T> extends AbstractPolicy 
implements WorkflowCommonC
         if (needsStarting) poller.start();
     }
 
+    // we could add an API for this, so arbitrary policies can be re-run from 
the UI
+    public Object runOnceNow() {
+        try {
+            return pollCallable.call();
+        } catch (Exception e) {
+            throw Exceptions.propagate(e);
+        }
+    }
 }
 

Reply via email to