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
         }