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 275e090f3755f042dbf8d17e136cdfb1151e768f Author: Alex Heneveld <[email protected]> AuthorDate: Tue Jun 6 23:12:59 2023 +0100 make unique tag more configurable and smarter default for workflow sensors and policies --- .../apache/brooklyn/core/workflow/WorkflowPolicy.java | 18 +++++++++++++++--- .../apache/brooklyn/core/workflow/WorkflowSensor.java | 13 +++++++++++++ .../steps/variables/TransformVariableWorkflowStep.java | 1 + 3 files changed, 29 insertions(+), 3 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 3eadfd568d..88324b3d9b 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 @@ -59,6 +59,10 @@ public class WorkflowPolicy<T> extends AbstractPolicy { 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; + protected transient Poller<Object> poller; // ? - do we need to have an option not to run when added? @@ -110,18 +114,26 @@ public class WorkflowPolicy<T> extends AbstractPolicy { @Override public void init() { - initUniqueTag(); super.init(); } public String initUniqueTag() { - if (uniqueTag==null) uniqueTag = "workflow-policy-hash-"+ Objects.hash(getDisplayName(), config().getBag()); + return getUniqueTag(); + } + + @Override + public String getUniqueTag() { + if (uniqueTag==null) { + uniqueTag = WorkflowSensor.getUniqueTag(config().getBag(), null); + if (uniqueTag==null) { + uniqueTag = "workflow-policy-hash-" + Objects.hash(getDisplayName(), config().getBag()); + } + } return super.getUniqueTag(); } @Override public void setEntity(EntityLocal entity) { - initUniqueTag(); super.setEntity(entity); poller = new Poller<>(getEntity(), this, false); 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 7c67301fc7..d86b623631 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 @@ -64,6 +64,18 @@ public class WorkflowSensor<T> extends AbstractAddTriggerableSensor<T> implement public static final ConfigKey<EntityValueToSet> SENSOR = ConfigKeys.newConfigKey(EntityValueToSet.class, "sensor"); + public static final ConfigKey<String> UNIQUE_TAG_CAMEL = ConfigKeys.newStringConfigKey("uniqueTag"); + public static final ConfigKey<String> UNIQUE_TAG_UNDERSCORE = ConfigKeys.newStringConfigKey("unique_tag"); + public static final ConfigKey<String> UNIQUE_TAG_DASH = ConfigKeys.newStringConfigKey("unique-tag"); + + static String getUniqueTag(ConfigBag bag, String defaultValue) { + String result = bag.get(UNIQUE_TAG_CAMEL); + if (result==null) result = bag.get(UNIQUE_TAG_UNDERSCORE); + if (result==null) result = bag.get(UNIQUE_TAG_DASH); + if (result==null) result = defaultValue; + return result; + } + // do we need to have an option not to run when initialization is done? public WorkflowSensor() {} @@ -98,6 +110,7 @@ public class WorkflowSensor<T> extends AbstractAddTriggerableSensor<T> implement .name("Sensor Workflow Feed: "+sensor.getName()) .entity(entity) .onlyIfServiceUp(Maybe.ofDisallowingNull(EntityInitializers.resolve(params, ONLY_IF_SERVICE_UP)).or(false)) + .uniqueTag(getUniqueTag(params, "workflow_sensor_feed:"+sensor.getName())) .poll(pollConfig); wc.init(feedBuilder.build(true)); diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java index d59f797fb6..14c8ff78d8 100644 --- a/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java +++ b/core/src/main/java/org/apache/brooklyn/core/workflow/steps/variables/TransformVariableWorkflowStep.java @@ -220,6 +220,7 @@ public class TransformVariableWorkflowStep extends WorkflowStepDefinition { TRANSFORMATIONS.put("average", () -> v -> average(v, "average")); TRANSFORMATIONS.put("size", () -> v -> size(v, "size")); TRANSFORMATIONS.put("get", () -> v -> { + // TODO should this be able to get indexes etc if (v instanceof Supplier) return ((Supplier)v).get(); return v; });
