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 09803fd23f add config keys for all the supported workflow policy
options
09803fd23f is described below
commit 09803fd23f94f040221d96141d78892ccd2d0664
Author: Alex Heneveld <[email protected]>
AuthorDate: Thu Jul 27 00:35:15 2023 +0100
add config keys for all the supported workflow policy options
and tidy up how it is shared with WorkflowSensor
---
.../java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java | 7 ++-----
.../java/org/apache/brooklyn/core/workflow/WorkflowSensor.java | 9 ++++++---
.../org/apache/brooklyn/core/workflow/WorkflowBasicTest.java | 1 +
3 files changed, 9 insertions(+), 8 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 e54b4b0b89..02043513b0 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
@@ -46,7 +46,7 @@ import java.util.function.Supplier;
* Configurable policy which runs workflow according to schedule and/or
trigger.
*/
@Beta
-public class WorkflowPolicy<T> extends AbstractPolicy {
+public class WorkflowPolicy<T> extends AbstractPolicy implements
WorkflowCommonConfig {
private static final Logger LOG =
LoggerFactory.getLogger(WorkflowPolicy.class);
@@ -56,9 +56,6 @@ public class WorkflowPolicy<T> extends AbstractPolicy {
public static final ConfigKey<DslPredicates.DslPredicate> CONDITION =
ConfigKeys.newConfigKey(DslPredicates.DslPredicate.class, "condition",
"Optional condition required for this sensor feed to run");
- public static final ConfigKey<Map<String,Object>> INPUT =
WorkflowCommonConfig.INPUT;
- public static final ConfigKey<List<Object>> STEPS =
WorkflowCommonConfig.STEPS;
-
public static final ConfigKey<String> UNIQUE_TAG_CAMEL =
WorkflowSensor.UNIQUE_TAG_CAMEL;
public static final ConfigKey<String> UNIQUE_TAG_UNDERSCORE =
WorkflowSensor.UNIQUE_TAG_UNDERSCORE;
public static final ConfigKey<String> UNIQUE_TAG_DASH =
WorkflowSensor.UNIQUE_TAG_DASH;
@@ -144,7 +141,7 @@ public class WorkflowPolicy<T> extends AbstractPolicy {
.condition(new ConditionSupplierFromAdjunct());
Set<PollConfig> pollConfigs = MutableSet.of(pc);
- poller.schedulePoll(this, pollConfigs, new
WorkflowSensor.WorkflowPollCallable(
+ poller.schedulePoll(this, pollConfigs, new
WorkflowSensor.WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType.POLICY,
getDisplayName() + " (policy)", config().getBag(), this), new
PolicyNoOpPollHandler());
if (!isSuspended()) resume();
diff --git
a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java
b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java
index d86b623631..fb562546d1 100644
--- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java
+++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowSensor.java
@@ -99,7 +99,8 @@ public class WorkflowSensor<T> extends
AbstractAddTriggerableSensor<T> implement
LOG.debug("Adding workflow sensor {} to {}", sensor.getName(),
entity);
}
- WorkflowPollCallable wc = new WorkflowPollCallable("Workflow for
sensor " + sensor.getName(), params, null);
+ WorkflowPollCallable wc = new
WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType.SENSOR,
+ "Workflow for sensor " + sensor.getName(), params, null);
FunctionPollConfig<Object,Object> pollConfig = new
FunctionPollConfig<Object,T>(sensor)
.callable(wc)
.onSuccess(TypeCoercions.<T>function((Class)sensor.getTypeToken().getRawType()));
@@ -156,8 +157,10 @@ public class WorkflowSensor<T> extends
AbstractAddTriggerableSensor<T> implement
private final String workflowCallableName;
private BrooklynObject entityOrAdjunct;
private final Map<String,Object> params;
+ private final WorkflowExecutionContext.WorkflowContextType wcType;
- protected WorkflowPollCallable(String workflowCallableName, ConfigBag
params, BrooklynObject entityOrAdjunct) {
+ protected
WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType wcType,
String workflowCallableName, ConfigBag params, BrooklynObject entityOrAdjunct) {
+ this.wcType = wcType;
this.workflowCallableName = workflowCallableName;
this.params = params.getAllConfigRaw();
this.entityOrAdjunct = entityOrAdjunct;
@@ -175,7 +178,7 @@ public class WorkflowSensor<T> extends
AbstractAddTriggerableSensor<T> implement
if (entityOrAdjunct==null) entityOrAdjunct =
BrooklynTaskTags.getContextEntity(Tasks.current());
if (entityOrAdjunct==null) throw new IllegalStateException("No
entity adjunct or entity available for "+this);
- WorkflowExecutionContext wc =
WorkflowExecutionContext.newInstancePersisted(entityOrAdjunct,
WorkflowExecutionContext.WorkflowContextType.SENSOR,
+ WorkflowExecutionContext wc =
WorkflowExecutionContext.newInstancePersisted(entityOrAdjunct, wcType,
workflowCallableName, ConfigBag.newInstance(params), null,
null, null);
Task<Object> wt = wc.getTask(false /* condition checked by poll
config framework */).get();
if (entityOrAdjunct instanceof EntityAdjunct) {
diff --git
a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java
b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java
index 098e0c23a2..347ac09ee3 100644
---
a/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java
+++
b/core/src/test/java/org/apache/brooklyn/core/workflow/WorkflowBasicTest.java
@@ -409,6 +409,7 @@ public class WorkflowBasicTest extends
BrooklynMgmtUnitTestSupport {
if (logWatcher.getMessages().size()!=8) {
// add logging for intermittent failure; sometimes we are
getting way more messages than we expect
+ // on slow servers we might see 9, with a "Blocked by lock on
lock-for-incrementor, currently held by <other task>" at the end
throw new IllegalStateException("Wrong number of messages
found ("+logWatcher.getMessages().size()+", not 8): "+logWatcher.getMessages());
}