You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/09/15 18:53:21 UTC
[02/15] incubator-brooklyn git commit: misc better api usability,
javadoc, and debugging, esp around feeds
misc better api usability, javadoc, and debugging, esp around feeds
sensors have a default persistence mode,
`Entities.dumpInfo` will list feeds (which aren't persisted),
`EntityInitializer` explains its lifecycle better,
and CAMP gives a slightly more useful error
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/c217303e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/c217303e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/c217303e
Branch: refs/heads/master
Commit: c217303e526ccc166b7dcfc4b970cb6dbfb547f3
Parents: a57dbe4
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Tue Sep 8 13:31:56 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Tue Sep 8 13:31:56 2015 +0100
----------------------------------------------------------------------
.../brooklyn/api/entity/EntityInitializer.java | 9 +++++
.../BasicAssemblyTemplateInstantiator.java | 2 +-
.../apache/brooklyn/core/entity/Entities.java | 37 ++++++++++++++++++--
.../apache/brooklyn/core/sensor/Sensors.java | 2 +-
4 files changed, 45 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c217303e/api/src/main/java/org/apache/brooklyn/api/entity/EntityInitializer.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/EntityInitializer.java b/api/src/main/java/org/apache/brooklyn/api/entity/EntityInitializer.java
index 24ae8d3..a9f407a 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/EntityInitializer.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/EntityInitializer.java
@@ -20,12 +20,21 @@ package org.apache.brooklyn.api.entity;
import java.util.Map;
+import org.apache.brooklyn.api.objs.EntityAdjunct;
+import org.apache.brooklyn.api.policy.Policy;
+import org.apache.brooklyn.api.sensor.Feed;
+
/**
* Instances of this class supply logic which can be used to initialize entities.
* These can be added to an {@link EntitySpec} programmatically, or declared as part
* of YAML recipes in a <code>brooklyn.initializers</code> section.
* In the case of the latter, implementing classes should define a no-arg constructor
* or a {@link Map} constructor so that YAML parameters can be supplied.
+ * <p>
+ * Note that initializers are only invoked on first creation; they are not called
+ * during a rebind. Instead, the typical pattern is that initializers will create
+ * {@link EntityAdjunct} instances such as {@link Policy} and {@link Feed}
+ * which will be attached during rebind.
**/
public interface EntityInitializer {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c217303e/camp/camp-base/src/main/java/org/apache/brooklyn/camp/spi/instantiate/BasicAssemblyTemplateInstantiator.java
----------------------------------------------------------------------
diff --git a/camp/camp-base/src/main/java/org/apache/brooklyn/camp/spi/instantiate/BasicAssemblyTemplateInstantiator.java b/camp/camp-base/src/main/java/org/apache/brooklyn/camp/spi/instantiate/BasicAssemblyTemplateInstantiator.java
index 28eac3a..82751c3 100644
--- a/camp/camp-base/src/main/java/org/apache/brooklyn/camp/spi/instantiate/BasicAssemblyTemplateInstantiator.java
+++ b/camp/camp-base/src/main/java/org/apache/brooklyn/camp/spi/instantiate/BasicAssemblyTemplateInstantiator.java
@@ -30,7 +30,7 @@ public class BasicAssemblyTemplateInstantiator implements AssemblyTemplateInstan
// template.getPlatformComponentTemplates().links().iterator().next().resolve();
// platforms should set a bunch of instantiators, or else let the ComponentTemplates do this!
- throw new UnsupportedOperationException("Basic instantiator not yet supported");
+ throw new UnsupportedOperationException("No instantiator could be found which understands the submitted plan. Basic instantiator not yet supported.");
}
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c217303e/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java b/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
index c1a77ad..c2c2195 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
@@ -58,6 +58,7 @@ import org.apache.brooklyn.api.mgmt.TaskFactory;
import org.apache.brooklyn.api.policy.Policy;
import org.apache.brooklyn.api.sensor.AttributeSensor;
import org.apache.brooklyn.api.sensor.Enricher;
+import org.apache.brooklyn.api.sensor.Feed;
import org.apache.brooklyn.api.sensor.Sensor;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.config.ConfigKey.HasConfigKey;
@@ -318,7 +319,10 @@ public class Entities {
out.append(currentIndentation+tab+tab+"locations = "+e.getLocations()+"\n");
- Set<ConfigKey<?>> keys = Sets.newLinkedHashSet( ((EntityInternal)e).getConfigMap().getLocalConfig().keySet() );
+ Set<ConfigKey<?>> keys = Sets.newLinkedHashSet(
+ ((EntityInternal)e).config().getLocalBag().getAllConfigAsConfigKeyMap().keySet()
+ //((EntityInternal)e).getConfigMap().getLocalConfig().keySet()
+ );
for (ConfigKey<?> it : sortConfigKeys(keys)) {
// use the official config key declared on the type if available
// (since the map sometimes contains <object> keys
@@ -385,6 +389,13 @@ public class Entities {
}
}
+ if (!((EntityInternal)e).feeds().getFeeds().isEmpty()) {
+ out.append(currentIndentation+tab+tab+"Feeds:\n");
+ for (Feed feed : ((EntityInternal)e).feeds().getFeeds()) {
+ dumpInfo(feed, out, currentIndentation+tab+tab+tab, tab);
+ }
+ }
+
for (Entity it : e.getChildren()) {
dumpInfo(it, out, currentIndentation+tab, tab);
}
@@ -477,6 +488,26 @@ public class Entities {
out.flush();
}
+ public static void dumpInfo(Feed feed, String currentIndentation, String tab) throws IOException {
+ dumpInfo(feed, new PrintWriter(System.out), currentIndentation, tab);
+ }
+ public static void dumpInfo(Feed feed, Writer out, String currentIndentation, String tab) throws IOException {
+ out.append(currentIndentation+feed.toString()+"\n");
+
+ // TODO create a FeedType cf EnricherType ?
+ for (ConfigKey<?> key : sortConfigKeys(((BrooklynObjectInternal)feed).config().getBag().getAllConfigAsConfigKeyMap().keySet())) {
+ Maybe<Object> val = ((BrooklynObjectInternal)feed).config().getRaw(key);
+ if (!isTrivial(val)) {
+ out.append(currentIndentation+tab+tab+key);
+ out.append(" = ");
+ if (isSecret(key.getName())) out.append("xxxxxxxx");
+ else out.append(""+val.get());
+ out.append("\n");
+ }
+ }
+
+ out.flush();
+ }
public static void dumpInfo(Policy pol) {
try {
@@ -963,7 +994,7 @@ public class Entities {
}
public static <T> Supplier<T> attributeSupplier(Entity entity, AttributeSensor<T> sensor) {
- return EntityAndAttribute.supplier(entity, sensor);
+ return EntityAndAttribute.create(entity, sensor);
}
public static <T> Supplier<T> attributeSupplier(EntityAndAttribute<T> tuple) { return tuple; }
@@ -1061,7 +1092,7 @@ public class Entities {
/** Logs a warning if an entity has a value for a config key. */
public static void warnOnIgnoringConfig(Entity entity, ConfigKey<?> key) {
- if (entity.getConfigRaw(key, true).isPresentAndNonNull())
+ if (((EntityInternal)entity).config().getRaw(key).isPresentAndNonNull())
log.warn("Ignoring "+key+" set on "+entity+" ("+entity.getConfig(key)+")");
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c217303e/core/src/main/java/org/apache/brooklyn/core/sensor/Sensors.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/Sensors.java b/core/src/main/java/org/apache/brooklyn/core/sensor/Sensors.java
index 05227d0..823689d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/Sensors.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/Sensors.java
@@ -56,7 +56,7 @@ public class Sensors {
private String name;
private TypeToken<T> type;
private String description;
- private SensorPersistenceMode persistence;
+ private SensorPersistenceMode persistence = SensorPersistenceMode.REQUIRED;
protected Builder() { // use builder(type, name) instead
}