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(+)
----------------------------------------------------------------------