You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2016/11/16 17:20:27 UTC

[3/6] brooklyn-library git commit: ZooKeeper nodes publish main.uri and ensembles aggregate to list

ZooKeeper nodes publish main.uri and ensembles aggregate to list


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/1f0a16ed
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/1f0a16ed
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/1f0a16ed

Branch: refs/heads/master
Commit: 1f0a16ed7743475fe2a99fd6afcfe99ea137a8f9
Parents: ae000a5
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue Nov 15 13:06:34 2016 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Wed Nov 16 14:52:19 2016 +0000

----------------------------------------------------------------------
 .../entity/zookeeper/ZooKeeperEnsemble.java     |  4 ++-
 .../entity/zookeeper/ZooKeeperEnsembleImpl.java | 33 +++++++++-----------
 .../entity/zookeeper/ZooKeeperNodeImpl.java     | 13 ++++++++
 .../zookeeper/ZooKeeperEnsembleLiveTest.java    |  2 ++
 4 files changed, 33 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/1f0a16ed/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsemble.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsemble.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsemble.java
index 2ed6206..487d639 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsemble.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsemble.java
@@ -54,10 +54,12 @@ public interface ZooKeeperEnsemble extends DynamicCluster {
             .constraint(Predicates.notNull())
             .build();
 
-    @SuppressWarnings("serial")
     AttributeSensor<List<String>> ZOOKEEPER_SERVERS = Sensors.newSensor(new TypeToken<List<String>>() { },
             "zookeeper.servers", "Hostnames to connect to cluster with");
 
+    AttributeSensor<String> ZOOKEEPER_ENDPOINTS = Sensors.newStringSensor(
+            "zookeeper.endpoints", "A comma-separated host:port list of members of the ensemble");
+
     /** @deprecated since 0.10.0 use <code>sensors().get(ZooKeeperEnsemble.CLUSTER_NAME)</code> instead */
     @Deprecated
     String getClusterName();

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/1f0a16ed/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
index 06ea472..0271e1d 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperEnsembleImpl.java
@@ -18,21 +18,17 @@
  */
 package org.apache.brooklyn.entity.zookeeper;
 
-import java.util.Collection;
-import java.util.List;
-
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.sensor.EnricherSpec;
 import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.enricher.stock.Enrichers;
 import org.apache.brooklyn.entity.group.AbstractMembershipTrackingPolicy;
 import org.apache.brooklyn.entity.group.DynamicClusterImpl;
 import org.apache.brooklyn.util.guava.Suppliers;
 
 import com.google.common.base.Supplier;
 
-import com.google.common.collect.Lists;
-
 public class ZooKeeperEnsembleImpl extends DynamicClusterImpl implements ZooKeeperEnsemble {
 
     public ZooKeeperEnsembleImpl() {}
@@ -57,18 +53,19 @@ public class ZooKeeperEnsembleImpl extends DynamicClusterImpl implements ZooKeep
     @Override
     protected void initEnrichers() {
         super.initEnrichers();
-        
-    }
-    
-    @Override
-    public void start(Collection<? extends Location> locations) {
-        super.start(locations);
-        
-        List<String> zookeeperServers = Lists.newArrayList();
-        for (Entity zookeeper : getMembers()) {
-            zookeeperServers.add(zookeeper.getAttribute(Attributes.HOSTNAME));
-        }
-        sensors().set(ZOOKEEPER_SERVERS, zookeeperServers);
+        EnricherSpec<?> zks = Enrichers.builder()
+                .aggregating(Attributes.MAIN_URI)
+                .publishing(ZOOKEEPER_SERVERS)
+                .fromMembers()
+                .build();
+        EnricherSpec<?> zke = Enrichers.builder()
+                .joining(ZOOKEEPER_SERVERS)
+                .publishing(ZOOKEEPER_ENDPOINTS)
+                .quote(false)
+                .separator(",")
+                .build();
+        enrichers().add(zks);
+        enrichers().add(zke);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/1f0a16ed/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperNodeImpl.java b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperNodeImpl.java
index cbf055e..e8ba9ee 100644
--- a/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperNodeImpl.java
+++ b/software/messaging/src/main/java/org/apache/brooklyn/entity/zookeeper/ZooKeeperNodeImpl.java
@@ -18,6 +18,13 @@
  */
 package org.apache.brooklyn.entity.zookeeper;
 
+import java.net.URI;
+
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.location.access.BrooklynAccessUtils;
+
+import com.google.common.net.HostAndPort;
+
 /**
  * An {@link org.apache.brooklyn.api.entity.Entity} that represents a single standalone zookeeper instance.
  */
@@ -42,4 +49,10 @@ public class ZooKeeperNodeImpl extends AbstractZooKeeperImpl implements ZooKeepe
         return ZooKeeperDriver.class;
     }
 
+    @Override
+    protected void postStart() {
+        super.postStart();
+        HostAndPort hap = BrooklynAccessUtils.getBrooklynAccessibleAddress(this, sensors().get(ZOOKEEPER_PORT));
+        sensors().set(Attributes.MAIN_URI, URI.create(hap.toString()));
+    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/1f0a16ed/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
index 16d7047..52b4d08 100644
--- a/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
+++ b/software/messaging/src/test/java/org/apache/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
@@ -98,6 +98,8 @@ public class ZooKeeperEnsembleLiveTest extends BrooklynAppLiveTestSupport {
 
         EntityAsserts.assertAttributeEqualsEventually(ensemble, ZooKeeperEnsemble.GROUP_SIZE, 3);
         EntityAsserts.assertAttributeEqualsEventually(ensemble, Startable.SERVICE_UP, true);
+        assertNotNull(ensemble.sensors().get(ZooKeeperEnsemble.ZOOKEEPER_ENDPOINTS),
+                "expected value for " + ZooKeeperEnsemble.ZOOKEEPER_ENDPOINTS + " on " + ensemble + ", was null");
         Set<Integer> nodeIds = Sets.newHashSet();
         for (Entity zkNode : ensemble.getMembers()) {
             nodeIds.add(zkNode.config().get(ZooKeeperNode.MY_ID));