Address PR 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/4ce06368
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/4ce06368
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/4ce06368

Branch: refs/heads/master
Commit: 4ce0636890098fb3195f2719597ae296c341d44c
Parents: 8cfe58e
Author: Mike Zaccardo <[email protected]>
Authored: Tue Aug 4 11:52:01 2015 -0400
Committer: Mike Zaccardo <[email protected]>
Committed: Tue Aug 4 11:52:01 2015 -0400

----------------------------------------------------------------------
 .../entity/nosql/redis/RedisClusterImpl.java    | 29 ++++++++++----------
 1 file changed, 14 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4ce06368/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java
 
b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java
index e46ce65..89ca43c 100644
--- 
a/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java
+++ 
b/software/nosql/src/main/java/brooklyn/entity/nosql/redis/RedisClusterImpl.java
@@ -21,21 +21,22 @@ package brooklyn.entity.nosql.redis;
 import java.util.Collection;
 
 import brooklyn.enricher.Enrichers;
-import brooklyn.entity.Entity;
 import brooklyn.entity.basic.AbstractEntity;
 import brooklyn.entity.basic.Lifecycle;
 import brooklyn.entity.basic.ServiceStateLogic;
+import 
brooklyn.entity.basic.ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers;
 import brooklyn.entity.basic.ServiceStateLogic.ServiceProblemsLogic;
 import brooklyn.entity.group.DynamicCluster;
 import brooklyn.entity.proxying.EntitySpec;
-import brooklyn.entity.trait.Startable;
 import brooklyn.event.AttributeSensor;
 import brooklyn.event.basic.Sensors;
 import brooklyn.location.Location;
+import brooklyn.util.collections.QuorumCheck.QuorumChecks;
 import brooklyn.util.exceptions.Exceptions;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
 
 public class RedisClusterImpl extends AbstractEntity implements RedisCluster {
 
@@ -55,6 +56,7 @@ public class RedisClusterImpl extends AbstractEntity 
implements RedisCluster {
         return getAttribute(SLAVES);
     }
 
+    @Override
     public void init() {
         super.init();
 
@@ -70,6 +72,16 @@ public class RedisClusterImpl extends AbstractEntity 
implements RedisCluster {
                 .from(master)
                 .build());
     }
+
+    @Override
+    protected void initEnrichers() {
+        super.initEnrichers();
+        ServiceStateLogic.newEnricherFromChildrenUp().
+            checkChildrenOnly().
+            requireUpChildren(QuorumChecks.all()).
+            
configure(ComputeServiceIndicatorsFromChildrenAndMembers.IGNORE_ENTITIES_WITH_THESE_SERVICE_STATES,
 ImmutableSet.<Lifecycle>of()).
+            addTo(this);
+    }
     
     @Override
     public void start(Collection<? extends Location> locations) {
@@ -82,8 +94,6 @@ public class RedisClusterImpl extends AbstractEntity 
implements RedisCluster {
             ServiceProblemsLogic.updateProblemsIndicator(this, START, "Start 
failed with error: "+e);
             ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE);
             throw Exceptions.propagate(e);
-        } finally {
-            setAttribute(Startable.SERVICE_UP, calculateServiceUp());
         }
     }
 
@@ -105,8 +115,6 @@ public class RedisClusterImpl extends AbstractEntity 
implements RedisCluster {
             ServiceProblemsLogic.updateProblemsIndicator(this, STOP, "Stop 
failed with error: "+e);
             ServiceStateLogic.setExpectedState(this, Lifecycle.ON_FIRE);
             throw Exceptions.propagate(e);
-        } finally {
-            setAttribute(Startable.SERVICE_UP, calculateServiceUp());
         }
     }
 
@@ -119,13 +127,4 @@ public class RedisClusterImpl extends AbstractEntity 
implements RedisCluster {
     public void restart() {
         throw new UnsupportedOperationException();
     }
-
-    private boolean calculateServiceUp() {
-        if (!Boolean.TRUE.equals(getMaster().getAttribute(SERVICE_UP))) return 
false;
-
-        for (Entity member : getSlaves().getMembers())
-            if (!Boolean.TRUE.equals(member.getAttribute(SERVICE_UP))) return 
false;
-
-        return true;
-    }
 }

Reply via email to