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:50 UTC
[1/7] incubator-brooklyn git commit: Enable passing unit test.
Repository: incubator-brooklyn
Updated Branches:
refs/heads/master ed692e059 -> 388668abb
Enable passing unit test.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/028ec41e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/028ec41e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/028ec41e
Branch: refs/heads/master
Commit: 028ec41e3e91e7e11ca0dab7d90c401a389c9ebe
Parents: b0ae1e3
Author: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Authored: Sat Oct 10 08:07:30 2015 +0100
Committer: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Committed: Mon Oct 19 08:51:15 2015 +0100
----------------------------------------------------------------------
.../camp/brooklyn/ExternalConfigYamlTest.java | 54 +++++++++-----------
1 file changed, 25 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/028ec41e/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ExternalConfigYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ExternalConfigYamlTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ExternalConfigYamlTest.java
index 5d1ab39..2644303 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ExternalConfigYamlTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ExternalConfigYamlTest.java
@@ -54,49 +54,44 @@ public class ExternalConfigYamlTest extends AbstractYamlTest {
props.put("brooklyn.external.myprovider", MyExternalConfigSupplier.class.getName());
props.put("brooklyn.external.myprovider.mykey", "myval");
props.put("brooklyn.external.myproviderWithoutMapArg", MyExternalConfigSupplierWithoutMapArg.class.getName());
-
+
return LocalManagementContextForTests.builder(true)
.useProperties(props)
.build();
}
-
+
@Test
public void testExternalisedConfigReferencedFromYaml() throws Exception {
ConfigKey<String> MY_CONFIG_KEY = ConfigKeys.newStringConfigKey("my.config.key");
-
+
String yaml = Joiner.on("\n").join(
"services:",
"- serviceType: org.apache.brooklyn.core.test.entity.TestApplication",
" brooklyn.config:",
" my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")");
-
+
TestApplication app = (TestApplication) createAndStartApplication(new StringReader(yaml));
waitForApplicationTasks(app);
assertEquals(app.getConfig(MY_CONFIG_KEY), "myval");
}
- // FIXME fails currently - see comment at ConfigBag.get; fix at AbstractLocation.BasicConfigurationSupport to enable this?
-// at org.apache.brooklyn.util.core.config.ConfigBag.coerceFirstNonNullKeyValue(ConfigBag.java:464)
-// at org.apache.brooklyn.util.core.config.ConfigBag.get(ConfigBag.java:458)
-// at org.apache.brooklyn.util.core.config.ConfigBag.get(ConfigBag.java:345)
-// at org.apache.brooklyn.core.location.AbstractLocation$BasicConfigurationSupport.get(AbstractLocation.java:364) @Test
- @Test(groups="WIP")
+ @Test
public void testExternalisedLocationConfigReferencedFromYaml() throws Exception {
ConfigKey<String> MY_CONFIG_KEY = ConfigKeys.newStringConfigKey("my.config.key");
-
+
String yaml = Joiner.on("\n").join(
"services:",
"- type: org.apache.brooklyn.core.test.entity.TestApplication",
"location:",
" localhost:",
" my.config.key: $brooklyn:external(\"myprovider\", \"mykey\")");
-
+
TestApplication app = (TestApplication) createAndStartApplication(new StringReader(yaml));
waitForApplicationTasks(app);
assertEquals(Iterables.getOnlyElement( app.getLocations() ).config().get(MY_CONFIG_KEY), "myval");
}
-
+
@Test(groups="Integration")
public void testExternalisedLocationConfigSetViaProvisioningPropertiesReferencedFromYaml() throws Exception {
String yaml = Joiner.on("\n").join(
@@ -105,23 +100,23 @@ public class ExternalConfigYamlTest extends AbstractYamlTest {
" provisioning.properties:",
" credential: $brooklyn:external(\"myprovider\", \"mykey\")",
"location: localhost");
-
+
Entity app = createAndStartApplication(new StringReader(yaml));
waitForApplicationTasks(app);
Entity entity = Iterables.getOnlyElement( app.getChildren() );
assertEquals(Iterables.getOnlyElement( entity.getLocations() ).config().get(CloudLocationConfig.ACCESS_CREDENTIAL), "myval");
}
-
+
@Test
public void testExternalisedConfigFromSupplierWithoutMapArg() throws Exception {
ConfigKey<String> MY_CONFIG_KEY = ConfigKeys.newStringConfigKey("my.config.key");
-
+
String yaml = Joiner.on("\n").join(
"services:",
"- serviceType: org.apache.brooklyn.core.test.entity.TestApplication",
" brooklyn.config:",
" my.config.key: $brooklyn:external(\"myproviderWithoutMapArg\", \"mykey\")");
-
+
TestApplication app = (TestApplication) createAndStartApplication(new StringReader(yaml));
waitForApplicationTasks(app);
@@ -132,7 +127,7 @@ public class ExternalConfigYamlTest extends AbstractYamlTest {
public void testWhenExternalisedConfigSupplierDoesNotExist() throws Exception {
BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
props.put("brooklyn.external.myprovider", "wrong.classname.DoesNotExist");
-
+
try {
LocalManagementContextForTests.builder(true)
.useProperties(props)
@@ -144,12 +139,12 @@ public class ExternalConfigYamlTest extends AbstractYamlTest {
}
}
}
-
+
@Test
public void testWhenExternalisedConfigSupplierDoesNotHavingRightConstructor() throws Exception {
BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
props.put("brooklyn.external.myprovider", MyExternalConfigSupplierWithWrongConstructor.class.getName());
-
+
try {
LocalManagementContext mgmt2 = LocalManagementContextForTests.builder(true)
.useProperties(props)
@@ -162,45 +157,46 @@ public class ExternalConfigYamlTest extends AbstractYamlTest {
}
}
}
-
+
@Override
protected Logger getLogger() {
return log;
}
-
+
public static class MyExternalConfigSupplier extends AbstractExternalConfigSupplier {
private final Map<String, String> conf;
-
+
public MyExternalConfigSupplier(ManagementContext mgmt, String name, Map<String, String> conf) {
super(mgmt, name);
this.conf = conf;
}
-
+
@Override public String get(String key) {
return conf.get(key);
}
}
-
+
public static class MyExternalConfigSupplierWithoutMapArg extends AbstractExternalConfigSupplier {
public MyExternalConfigSupplierWithoutMapArg(ManagementContext mgmt, String name) {
super(mgmt, name);
}
-
+
@Override public String get(String key) {
return key.equals("mykey") ? "myHardcodedVal" : null;
}
}
-
+
public static class MyExternalConfigSupplierWithWrongConstructor implements ExternalConfigSupplier {
public MyExternalConfigSupplierWithWrongConstructor(double d) {
}
-
+
@Override public String getName() {
return "myname";
}
-
+
@Override public String get(String key) {
return null;
}
}
+
}
[3/7] incubator-brooklyn git commit: Trivial tidies.
Posted by sj...@apache.org.
Trivial tidies.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/16f9a9a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/16f9a9a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/16f9a9a2
Branch: refs/heads/master
Commit: 16f9a9a214c3bd19d03093592bf91ac1f5eb0bb3
Parents: 51750e2
Author: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Authored: Fri Oct 9 13:36:21 2015 +0100
Committer: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Committed: Mon Oct 19 08:51:15 2015 +0100
----------------------------------------------------------------------
.../brooklyn/util/core/task/ValueResolver.java | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/16f9a9a2/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
index 4a1d030..2809482 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
@@ -309,7 +309,7 @@ public class ValueResolver<T> implements DeferredSupplier<T> {
}
} else if (v instanceof DeferredSupplier<?>) {
- final Object vf = v;
+ final DeferredSupplier<?> ds = (DeferredSupplier<?>) v;
if ((!Boolean.FALSE.equals(embedResolutionInTask) && (exec!=null || timeout!=null)) || Boolean.TRUE.equals(embedResolutionInTask)) {
if (exec==null)
@@ -318,16 +318,16 @@ public class ValueResolver<T> implements DeferredSupplier<T> {
Callable<Object> callable = new Callable<Object>() {
public Object call() throws Exception {
try {
- Tasks.setBlockingDetails("Retrieving "+vf);
- return ((DeferredSupplier<?>) vf).get();
+ Tasks.setBlockingDetails("Retrieving "+ds);
+ return ds.get();
} finally {
Tasks.resetBlockingDetails();
}
} };
String description = getDescription();
- TaskBuilder<Object> vb = Tasks.<Object>builder().body(callable).displayName("Resolving dependent value").description(description);
- if (isTransientTask) vb.tag(BrooklynTaskTags.TRANSIENT_TASK_TAG);
- Task<Object> vt = exec.submit(vb.build());
+ TaskBuilder<Object> tb = Tasks.<Object>builder().body(callable).displayName("Resolving dependent value").description(description);
+ if (isTransientTask) tb.tag(BrooklynTaskTags.TRANSIENT_TASK_TAG);
+ Task<Object> vt = exec.submit(tb.build());
// TODO to handle immediate resolution, it would be nice to be able to submit
// so it executes in the current thread,
// or put a marker in the target thread or task while it is running that the task
@@ -340,8 +340,8 @@ public class ValueResolver<T> implements DeferredSupplier<T> {
} else {
try {
- Tasks.setBlockingDetails("Retrieving (non-task) "+vf);
- v = ((DeferredSupplier<?>) vf).get();
+ Tasks.setBlockingDetails("Retrieving (non-task) "+ds);
+ v = ((DeferredSupplier<?>) ds).get();
} finally {
Tasks.resetBlockingDetails();
}
[4/7] incubator-brooklyn git commit: Get a valid execution context
even if no entity is available.
Posted by sj...@apache.org.
Get a valid execution context even if no entity is available.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/51750e2b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/51750e2b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/51750e2b
Branch: refs/heads/master
Commit: 51750e2b1f3c2585d08ff774caf68c38d071de9d
Parents: f1d90c6
Author: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Authored: Fri Oct 9 13:35:48 2015 +0100
Committer: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Committed: Mon Oct 19 08:51:15 2015 +0100
----------------------------------------------------------------------
.../spi/dsl/BrooklynDslDeferredSupplier.java | 26 +++++++++++++++-----
1 file changed, 20 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/51750e2b/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 389fe69..05eea1f 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
@@ -28,9 +28,11 @@ 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.Entities;
import org.apache.brooklyn.core.entity.EntityInternal;
+import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
+import org.apache.brooklyn.util.core.task.BasicExecutionContext;
import org.apache.brooklyn.util.core.task.DeferredSupplier;
+import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,18 +61,18 @@ public abstract class BrooklynDslDeferredSupplier<T> implements DeferredSupplier
private static final long serialVersionUID = -8789624905412198233L;
private static final Logger log = LoggerFactory.getLogger(BrooklynDslDeferredSupplier.class);
-
+
// TODO json of this object should *be* this, not wrapped this ($brooklyn:literal is a bit of a hack, though it might work!)
@JsonInclude
@JsonProperty(value="$brooklyn:literal")
// currently marked transient because it's only needed for logging
private transient Object dsl = "(gone)";
-
+
public BrooklynDslDeferredSupplier() {
PlanInterpretationNode sourceNode = BrooklynDslInterpreter.currentNode();
dsl = sourceNode!=null ? sourceNode.getOriginalValue() : null;
}
-
+
/** returns the current entity; for use in implementations of {@link #get()} */
protected final static EntityInternal entity() {
// rely on implicit ThreadLocal for now
@@ -82,15 +84,27 @@ public abstract class BrooklynDslDeferredSupplier<T> implements DeferredSupplier
try {
if (log.isDebugEnabled())
log.debug("Queuing task to resolve "+dsl);
- T result = Entities.submit(entity(), newTask()).get();
+
+ EntityInternal entity = (EntityInternal) BrooklynTaskTags.getTargetOrContextEntity(Tasks.current());
+ ExecutionContext exec =
+ (entity != null) ? entity.getExecutionContext()
+ : BasicExecutionContext.getCurrentExecutionContext();
+ if (exec == null) {
+ throw new IllegalStateException("No execution context available to resolve " + dsl);
+ }
+
+ Task<T> task = newTask();
+ T result = exec.submit(task).get();
+
if (log.isDebugEnabled())
log.debug("Resolved "+result+" from "+dsl);
return result;
+
} catch (Exception e) {
throw Exceptions.propagate(e);
}
}
-
+
@Override
public abstract Task<T> newTask();
[2/7] incubator-brooklyn git commit: DslExternal obtains mgmt context
without requiring an in-scope entity.
Posted by sj...@apache.org.
DslExternal obtains mgmt context without requiring an in-scope entity.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/b0ae1e38
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/b0ae1e38
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/b0ae1e38
Branch: refs/heads/master
Commit: b0ae1e38fd055aa489403c11b54afb1f70b9cde5
Parents: 492788d
Author: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Authored: Fri Oct 9 14:31:08 2015 +0100
Committer: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Committed: Mon Oct 19 08:51:15 2015 +0100
----------------------------------------------------------------------
.../camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b0ae1e38/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java
index 92dc14e..8cdcb76 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java
@@ -35,8 +35,9 @@ import org.apache.brooklyn.camp.brooklyn.spi.creation.EntitySpecConfiguration;
import org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslDeferredSupplier;
import org.apache.brooklyn.camp.brooklyn.spi.dsl.DslUtils;
import org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent.Scope;
+import org.apache.brooklyn.core.config.external.ExternalConfigSupplier;
import org.apache.brooklyn.core.entity.EntityDynamicType;
-import org.apache.brooklyn.core.entity.EntityInternal;
+import org.apache.brooklyn.core.mgmt.internal.ExternalConfigSupplierRegistry;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
import org.apache.brooklyn.core.mgmt.persist.DeserializingClassRenamesProvider;
import org.apache.brooklyn.core.sensor.DependentConfiguration;
@@ -48,7 +49,6 @@ import org.apache.brooklyn.util.core.flags.TypeCoercions;
import org.apache.brooklyn.util.core.task.DeferredSupplier;
import org.apache.brooklyn.util.core.task.Tasks;
import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.javalang.Reflections;
import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes;
import org.apache.brooklyn.util.text.Strings;
@@ -328,13 +328,12 @@ public class BrooklynDslCommon {
@Override
public Task<Object> newTask() {
return Tasks.<Object>builder()
- .name("resolving external configuration: '" + key + "' from provider '" + providerName + "'")
+ .displayName("resolving external configuration: '" + key + "' from provider '" + providerName + "'")
.dynamic(false)
.body(new Callable<Object>() {
@Override
public Object call() throws Exception {
- EntityInternal entity = (EntityInternal) BrooklynDslDeferredSupplier.entity();
- ManagementContextInternal managementContext = (ManagementContextInternal) entity.getManagementContext();
+ ManagementContextInternal managementContext = DslExternal.managementContext();
return managementContext.getExternalConfigProviderRegistry().getConfig(providerName, key);
}
})
[6/7] incubator-brooklyn git commit: Tag execution contexts (hence
all submitted tasks) with the current management context.
Posted by sj...@apache.org.
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
[5/7] incubator-brooklyn git commit: Support deferred suppliers
within location config.
Posted by sj...@apache.org.
Support deferred suppliers within location config.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/3c3b4794
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/3c3b4794
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/3c3b4794
Branch: refs/heads/master
Commit: 3c3b4794ee805a083b82f6fb6758e8b8f151b859
Parents: 16f9a9a
Author: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Authored: Fri Oct 9 13:37:41 2015 +0100
Committer: Alasdair Hodge <gi...@alasdairhodge.co.uk>
Committed: Mon Oct 19 08:51:15 2015 +0100
----------------------------------------------------------------------
.../core/location/AbstractLocation.java | 38 +++++++++++++++-----
1 file changed, 29 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3c3b4794/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java b/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
index 98a7e38..b5a91c7 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java
@@ -34,6 +34,7 @@ import org.apache.brooklyn.api.entity.Group;
import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.api.mgmt.ExecutionContext;
+import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.mgmt.SubscriptionContext;
import org.apache.brooklyn.api.mgmt.SubscriptionHandle;
import org.apache.brooklyn.api.mgmt.Task;
@@ -66,6 +67,9 @@ import org.apache.brooklyn.util.collections.SetFromLiveMap;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.apache.brooklyn.util.core.flags.FlagUtils;
import org.apache.brooklyn.util.core.flags.TypeCoercions;
+import org.apache.brooklyn.util.core.task.DeferredSupplier;
+import org.apache.brooklyn.util.core.task.Tasks;
+import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.stream.Streams;
import org.slf4j.Logger;
@@ -386,17 +390,33 @@ public abstract class AbstractLocation extends AbstractBrooklynObject implements
@Override
public <T> T get(ConfigKey<T> key) {
- if (hasConfig(key, false)) return getLocalBag().get(key);
- if (getParent() != null && isInherited(key)) {
- return getParent().getConfig(key);
+ Object result = null;
+ if (hasConfig(key, false)) {
+ result = getLocalBag().getAllConfigRaw().get(key.getName());
+
+ } else if (getParent() != null && isInherited(key)) {
+ result = getParent().getConfig(key);
+
+ } else {
+ // In case this entity class has overridden the given key (e.g. to set default), then retrieve this entity's key
+ // TODO when locations become entities, the duplication of this compared to EntityConfigMap.getConfig will disappear.
+ @SuppressWarnings("unchecked")
+ ConfigKey<T> ownKey = (ConfigKey<T>) elvis(locationType.getConfigKey(key.getName()), key);
+ result = ownKey.getDefaultValue();
+ }
+
+ if (result instanceof DeferredSupplier<?>) {
+ try {
+ ManagementContext mgmt = AbstractLocation.this.getManagementContext();
+ ExecutionContext exec = mgmt.getServerExecutionContext();
+ result = Tasks.resolveValue(result, key.getType(), exec);
+
+ } catch (Exception e) {
+ throw Exceptions.propagate(e);
+ }
}
-
- // In case this entity class has overridden the given key (e.g. to set default), then retrieve this entity's key
- // TODO when locations become entities, the duplication of this compared to EntityConfigMap.getConfig will disappear.
- @SuppressWarnings("unchecked")
- ConfigKey<T> ownKey = (ConfigKey<T>) elvis(locationType.getConfigKey(key.getName()), key);
- return ownKey.getDefaultValue();
+ return TypeCoercions.coerce(result, key.getTypeToken());
}
@Override
[7/7] incubator-brooklyn git commit: This closes #946
Posted by sj...@apache.org.
This closes #946
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/388668ab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/388668ab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/388668ab
Branch: refs/heads/master
Commit: 388668abb768a71b7f6758958d16bf4874fe3c19
Parents: ed692e0 028ec41
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon Oct 19 10:46:39 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Mon Oct 19 10:46:39 2015 +0100
----------------------------------------------------------------------
.../core/location/AbstractLocation.java | 38 ++++++++++----
.../brooklyn/core/mgmt/BrooklynTaskTags.java | 8 +++
.../internal/AbstractManagementContext.java | 13 ++++-
.../brooklyn/util/core/task/ValueResolver.java | 16 +++---
.../spi/dsl/BrooklynDslDeferredSupplier.java | 40 +++++++++++----
.../spi/dsl/methods/BrooklynDslCommon.java | 9 ++--
.../camp/brooklyn/ExternalConfigYamlTest.java | 54 +++++++++-----------
7 files changed, 116 insertions(+), 62 deletions(-)
----------------------------------------------------------------------