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/12/10 10:40:48 UTC

[1/5] incubator-brooklyn git commit: Add all.members.up sensor to DynamicCluster

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master b39ef3a82 -> dc17ddcae


Add all.members.up sensor to DynamicCluster


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

Branch: refs/heads/master
Commit: 1e34c50ca2fb9dcf990d49df639960f59c91d146
Parents: 89440c3
Author: Mike Zaccardo <mi...@cloudsoftcorp.com>
Authored: Mon Nov 23 11:23:28 2015 -0500
Committer: Mike Zaccardo <mi...@cloudsoftcorp.com>
Committed: Fri Dec 4 15:57:29 2015 -0800

----------------------------------------------------------------------
 .../brooklyn/entity/group/DynamicCluster.java   |  3 ++
 .../entity/group/DynamicClusterImpl.java        | 38 ++++++++++++++++++++
 2 files changed, 41 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1e34c50c/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
index 4033a1e..f6e3068 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
@@ -179,6 +179,9 @@ public interface DynamicCluster extends AbstractGroup, Cluster, MemberReplaceabl
     AttributeSensor<Entity> CLUSTER = Sensors.newSensor(Entity.class,
             "cluster.entity", "The cluster an entity is a member of");
 
+    AttributeSensor<Boolean> ALL_MEMBERS_UP = Sensors.newBooleanSensor(
+            "all.members.up", "True if all members' service.isUp is true");
+
     /**
      * Changes the cluster size by the given number.
      *

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1e34c50c/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
index 61180db..8435850 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.annotation.Nullable;
@@ -53,6 +54,8 @@ import org.apache.brooklyn.core.location.Locations;
 import org.apache.brooklyn.core.location.cloud.AvailabilityZoneExtension;
 import org.apache.brooklyn.core.sensor.Sensors;
 import org.apache.brooklyn.entity.stock.DelegateEntity;
+import org.apache.brooklyn.feed.function.FunctionFeed;
+import org.apache.brooklyn.feed.function.FunctionPollConfig;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.collections.QuorumCheck.QuorumChecks;
@@ -67,10 +70,12 @@ import org.apache.brooklyn.util.javalang.JavaClassNames;
 import org.apache.brooklyn.util.javalang.Reflections;
 import org.apache.brooklyn.util.text.StringPredicates;
 import org.apache.brooklyn.util.text.Strings;
+import org.apache.brooklyn.util.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Function;
+import com.google.common.base.Functions;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicates;
@@ -95,6 +100,8 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
     private static final AttributeSensor<Supplier<Integer>> NEXT_CLUSTER_MEMBER_ID = Sensors.newSensor(new TypeToken<Supplier<Integer>>() {},
             "next.cluster.member.id", "Returns the ID number of the next member to be added");
 
+    private volatile FunctionFeed allMembersUp;
+
     // TODO better mechanism for arbitrary class name to instance type coercion
     static {
         TypeCoercions.registerAdapter(String.class, NodePlacementStrategy.class, new Function<String, NodePlacementStrategy>() {
@@ -186,6 +193,7 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
     public void init() {
         super.init();
         initialiseMemberId();
+        connectAllMembersUp();
     }
 
     private void initialiseMemberId() {
@@ -196,6 +204,34 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
         }
     }
 
+    private void connectAllMembersUp() {
+        allMembersUp = FunctionFeed.builder()
+                .entity(this)
+                .period(Duration.FIVE_SECONDS)
+                .poll(new FunctionPollConfig<Boolean, Boolean>(ALL_MEMBERS_UP)
+                        .onException(Functions.constant(Boolean.FALSE))
+                        .callable(new AllMembersUpCallable()))
+                .build();
+    }
+
+    private class AllMembersUpCallable implements Callable<Boolean> {
+
+        @Override
+        public Boolean call() throws Exception {
+            if (DynamicClusterImpl.this.getMembers().isEmpty())
+                return false;
+
+            if (Lifecycle.RUNNING != DynamicClusterImpl.this.sensors().get(SERVICE_STATE_ACTUAL))
+                return false;
+
+            for (Entity member : DynamicClusterImpl.this.getMembers())
+                if (!Boolean.TRUE.equals(member.sensors().get(SERVICE_UP)))
+                    return false;
+
+            return true;
+        }
+    }
+
     @Override
     protected void initEnrichers() {
         if (config().getRaw(UP_QUORUM_CHECK).isAbsent() && getConfig(INITIAL_SIZE)==0) {
@@ -454,6 +490,8 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
         } catch (Exception e) {
             ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE);
             throw Exceptions.propagate(e);
+        } finally {
+            if (allMembersUp != null) allMembersUp.stop();
         }
     }
 


[2/5] incubator-brooklyn git commit: comments about postgres url

Posted by he...@apache.org.
comments about postgres url


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/8efda301
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/8efda301
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/8efda301

Branch: refs/heads/master
Commit: 8efda301a937ea06d2b7e49b5efd4fa3112dc5b9
Parents: 1337aff
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Dec 10 09:34:06 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Dec 10 09:34:06 2015 +0000

----------------------------------------------------------------------
 .../brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java | 5 +++++
 .../entity/database/postgresql/PostgreSqlSshDriver.java         | 1 +
 2 files changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8efda301/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
index b4d1501..0421a98 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java
@@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
 
 public class PostgreSqlNodeImpl extends SoftwareProcessImpl implements PostgreSqlNode {
 
+    @SuppressWarnings("unused")
     private static final Logger LOG = LoggerFactory.getLogger(PostgreSqlNodeImpl.class);
 
     public Class<?> getDriverInterface() {
@@ -60,6 +61,10 @@ public class PostgreSqlNodeImpl extends SoftwareProcessImpl implements PostgreSq
     protected void connectSensors() {
         super.connectSensors();
         connectServiceUpIsRunning();
+        // in jdbc url it is postgresql:// but elsewhere it is usually postgres://
+        // TODO add a public JDBC_URL ?  
+        // include user:pass@url ?  (for all datastore types, and if so, 
+        // make sure ".with_credentials" or similar is in name so it is masked in ui)
         sensors().set(DATASTORE_URL, String.format("postgresql://%s:%s/", getAttribute(HOSTNAME), getAttribute(POSTGRESQL_PORT)));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8efda301/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
----------------------------------------------------------------------
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
index 91c3e1e..059c348 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/postgresql/PostgreSqlSshDriver.java
@@ -151,6 +151,7 @@ public class PostgreSqlSshDriver extends AbstractSoftwareProcessSshDriver implem
             .queue();
         
         // check that the proposed install dir is one that user postgres can access
+        // TODO if command above fails then the following `getUnchecked` blocks forever
         if (DynamicTasks.queue(SshEffectorTasks.ssh(sudoAsUser("postgres", "ls "+getInstallDir())).allowingNonZeroExitCode()
                 .summary("check postgres user can access install dir")).asTask().getUnchecked()!=0) {
             log.info("Postgres install dir "+getInstallDir()+" for "+getEntity()+" is not accessible to user 'postgres'; " + "using "+altInstallDir+" instead");


[5/5] incubator-brooklyn git commit: review comments for DynamicCluster, now checking ClusterOneAndAllMembersUpCallable

Posted by he...@apache.org.
review comments for DynamicCluster, now checking ClusterOneAndAllMembersUpCallable


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

Branch: refs/heads/master
Commit: dc17ddcae20be79e9a5ed9e0cfcd0bbb20c53f1c
Parents: f456d48
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Dec 10 09:38:21 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Dec 10 09:38:21 2015 +0000

----------------------------------------------------------------------
 .../brooklyn/entity/group/DynamicCluster.java   |  4 ++--
 .../entity/group/DynamicClusterImpl.java        | 25 +++++++++++++-------
 2 files changed, 18 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/dc17ddca/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
index f6e3068..f528db7 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicCluster.java
@@ -179,8 +179,8 @@ public interface DynamicCluster extends AbstractGroup, Cluster, MemberReplaceabl
     AttributeSensor<Entity> CLUSTER = Sensors.newSensor(Entity.class,
             "cluster.entity", "The cluster an entity is a member of");
 
-    AttributeSensor<Boolean> ALL_MEMBERS_UP = Sensors.newBooleanSensor(
-            "all.members.up", "True if all members' service.isUp is true");
+    AttributeSensor<Boolean> CLUSTER_ONE_AND_ALL_MEMBERS_UP = Sensors.newBooleanSensor(
+            "cluster.one_and_all.members.up", "True cluster is running, there is on member, and all members are service.isUp");
 
     /**
      * Changes the cluster size by the given number.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/dc17ddca/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
index 8435850..756f665 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
@@ -35,6 +35,7 @@ import javax.annotation.Nullable;
 
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.entity.Group;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.location.MachineProvisioningLocation;
 import org.apache.brooklyn.api.mgmt.Task;
@@ -100,7 +101,7 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
     private static final AttributeSensor<Supplier<Integer>> NEXT_CLUSTER_MEMBER_ID = Sensors.newSensor(new TypeToken<Supplier<Integer>>() {},
             "next.cluster.member.id", "Returns the ID number of the next member to be added");
 
-    private volatile FunctionFeed allMembersUp;
+    private volatile FunctionFeed clusterOneAndAllMembersUp;
 
     // TODO better mechanism for arbitrary class name to instance type coercion
     static {
@@ -205,26 +206,32 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
     }
 
     private void connectAllMembersUp() {
-        allMembersUp = FunctionFeed.builder()
+        clusterOneAndAllMembersUp = FunctionFeed.builder()
                 .entity(this)
                 .period(Duration.FIVE_SECONDS)
-                .poll(new FunctionPollConfig<Boolean, Boolean>(ALL_MEMBERS_UP)
+                .poll(new FunctionPollConfig<Boolean, Boolean>(CLUSTER_ONE_AND_ALL_MEMBERS_UP)
                         .onException(Functions.constant(Boolean.FALSE))
-                        .callable(new AllMembersUpCallable()))
+                        .callable(new ClusterOneAndAllMembersUpCallable(this)))
                 .build();
     }
 
-    private class AllMembersUpCallable implements Callable<Boolean> {
+    private static class ClusterOneAndAllMembersUpCallable implements Callable<Boolean> {
 
+        private final Group cluster;
+        
+        public ClusterOneAndAllMembersUpCallable(Group cluster) {
+            this.cluster = cluster;
+        }
+        
         @Override
         public Boolean call() throws Exception {
-            if (DynamicClusterImpl.this.getMembers().isEmpty())
+            if (cluster.getMembers().isEmpty())
                 return false;
 
-            if (Lifecycle.RUNNING != DynamicClusterImpl.this.sensors().get(SERVICE_STATE_ACTUAL))
+            if (Lifecycle.RUNNING != cluster.sensors().get(SERVICE_STATE_ACTUAL))
                 return false;
 
-            for (Entity member : DynamicClusterImpl.this.getMembers())
+            for (Entity member : cluster.getMembers())
                 if (!Boolean.TRUE.equals(member.sensors().get(SERVICE_UP)))
                     return false;
 
@@ -491,7 +498,7 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
             ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE);
             throw Exceptions.propagate(e);
         } finally {
-            if (allMembersUp != null) allMembersUp.stop();
+            if (clusterOneAndAllMembersUp != null) clusterOneAndAllMembersUp.stop();
         }
     }
 


[3/5] incubator-brooklyn git commit: Merge branch 'postgres-comments'

Posted by he...@apache.org.
Merge branch 'postgres-comments'


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/7245a8a4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/7245a8a4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/7245a8a4

Branch: refs/heads/master
Commit: 7245a8a4e7911ba8001c86e3628b804f36b1b678
Parents: b39ef3a 8efda30
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Dec 10 09:34:39 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Dec 10 09:34:39 2015 +0000

----------------------------------------------------------------------
 .../brooklyn/entity/database/postgresql/PostgreSqlNodeImpl.java | 5 +++++
 .../entity/database/postgresql/PostgreSqlSshDriver.java         | 1 +
 2 files changed, 6 insertions(+)
----------------------------------------------------------------------



[4/5] incubator-brooklyn git commit: This closes #1050

Posted by he...@apache.org.
This closes #1050


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

Branch: refs/heads/master
Commit: f456d489f20d3e794268f117003e7de3a647705e
Parents: 7245a8a 1e34c50
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Dec 10 09:34:45 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Dec 10 09:34:45 2015 +0000

----------------------------------------------------------------------
 .../brooklyn/entity/group/DynamicCluster.java   |  3 ++
 .../entity/group/DynamicClusterImpl.java        | 38 ++++++++++++++++++++
 2 files changed, 41 insertions(+)
----------------------------------------------------------------------