You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sj...@apache.org on 2015/10/19 11:46:55 UTC
[6/7] incubator-brooklyn git commit: Tag execution contexts (hence
all submitted tasks) with the current management context.
Tag execution contexts (hence all submitted tasks) with the current management context.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/492788d4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/492788d4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/492788d4
Branch: refs/heads/master
Commit: 492788d4c98e9e50417b69a789281ccfd6f013d1
Parents: 3c3b479
Author: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Authored: Fri Oct 9 14:29:51 2015 +0100
Committer: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Committed: Mon Oct 19 08:51:15 2015 +0100
----------------------------------------------------------------------
.../apache/brooklyn/core/mgmt/BrooklynTaskTags.java | 8 ++++++++
.../core/mgmt/internal/AbstractManagementContext.java | 13 +++++++++++--
.../brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java | 14 +++++++++++---
3 files changed, 30 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/492788d4/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTaskTags.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTaskTags.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTaskTags.java
index 6c8e6be..1fba49d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTaskTags.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTaskTags.java
@@ -31,6 +31,7 @@ import javax.annotation.Nullable;
import org.apache.brooklyn.api.effector.Effector;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.mgmt.ExecutionManager;
+import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.mgmt.Task;
import org.apache.brooklyn.api.mgmt.entitlement.EntitlementContext;
import org.apache.brooklyn.util.core.config.ConfigBag;
@@ -157,6 +158,13 @@ public class BrooklynTaskTags extends TaskTags {
return em.getTasksWithTag(tagForContextEntity(e));
}
+ public static ManagementContext getManagementContext(Task<?> task) {
+ for (Object tag : task.getTags())
+ if ((tag instanceof ManagementContext))
+ return (ManagementContext) tag;
+ return null;
+ }
+
// ------------- stream tags -------------------------
public static class WrappedStream {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/492788d4/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
index 343528d..01b507f 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
@@ -83,6 +83,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Function;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableSet;
public abstract class AbstractManagementContext implements ManagementContextInternal {
private static final Logger log = LoggerFactory.getLogger(AbstractManagementContext.class);
@@ -242,7 +243,11 @@ public abstract class AbstractManagementContext implements ManagementContextInte
public ExecutionContext getExecutionContext(Entity e) {
// BEC is a thin wrapper around EM so fine to create a new one here; but make sure it gets the real entity
if (e instanceof AbstractEntity) {
- return new BasicExecutionContext(MutableMap.of("tag", BrooklynTaskTags.tagForContextEntity(e)), getExecutionManager());
+ ImmutableSet<Object> tags = ImmutableSet.<Object>of(
+ BrooklynTaskTags.tagForContextEntity(e),
+ this
+ );
+ return new BasicExecutionContext(MutableMap.of("tags", tags), getExecutionManager());
} else {
return ((EntityInternal)e).getManagementSupport().getExecutionContext();
}
@@ -251,7 +256,11 @@ public abstract class AbstractManagementContext implements ManagementContextInte
@Override
public ExecutionContext getServerExecutionContext() {
// BEC is a thin wrapper around EM so fine to create a new one here
- return new BasicExecutionContext(MutableMap.of("tag", BrooklynTaskTags.BROOKLYN_SERVER_TASK_TAG), getExecutionManager());
+ ImmutableSet<Object> tags = ImmutableSet.<Object>of(
+ this,
+ BrooklynTaskTags.BROOKLYN_SERVER_TASK_TAG
+ );
+ return new BasicExecutionContext(MutableMap.of("tags", tags), getExecutionManager());
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/492788d4/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
index 05eea1f..65bf561 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/BrooklynDslDeferredSupplier.java
@@ -21,15 +21,16 @@ package org.apache.brooklyn.camp.brooklyn.spi.dsl;
import java.io.Serializable;
import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.mgmt.ExecutionContext;
import org.apache.brooklyn.api.mgmt.Task;
import org.apache.brooklyn.api.mgmt.TaskFactory;
import org.apache.brooklyn.camp.spi.Assembly;
import org.apache.brooklyn.camp.spi.AssemblyTemplate;
import org.apache.brooklyn.camp.spi.resolve.interpret.PlanInterpretationNode;
import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.effector.EffectorTasks;
import org.apache.brooklyn.core.entity.EntityInternal;
import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
+import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.util.core.task.BasicExecutionContext;
import org.apache.brooklyn.util.core.task.DeferredSupplier;
import org.apache.brooklyn.util.core.task.Tasks;
@@ -75,8 +76,15 @@ public abstract class BrooklynDslDeferredSupplier<T> implements DeferredSupplier
/** returns the current entity; for use in implementations of {@link #get()} */
protected final static EntityInternal entity() {
- // rely on implicit ThreadLocal for now
- return (EntityInternal) EffectorTasks.findEntity();
+ return (EntityInternal) BrooklynTaskTags.getTargetOrContextEntity(Tasks.current());
+ }
+
+ /**
+ * Returns the current management context; for use in implementations of {@link #get()} that are not associated
+ * with an entity.
+ */
+ protected final static ManagementContextInternal managementContext() {
+ return (ManagementContextInternal) BrooklynTaskTags.getManagementContext(Tasks.current());
}
@Override