Updated Branches: refs/heads/master 328350095 -> c257ac859
fixing https://issues.apache.org/jira/browse/STRATOS-419 Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/e980b797 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/e980b797 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/e980b797 Branch: refs/heads/master Commit: e980b797e4890a49758236f00ffd5e5e80930c3a Parents: 3283500 Author: Nirmal Fernando <[email protected]> Authored: Sat Feb 8 20:47:13 2014 +0530 Committer: Nirmal Fernando <[email protected]> Committed: Sat Feb 8 20:47:13 2014 +0530 ---------------------------------------------------------------------- .../impl/CloudControllerServiceImpl.java | 14 +++++-- .../cloud/controller/pojo/ClusterContext.java | 12 +++++- .../cloud/controller/pojo/MemberContext.java | 39 ++++++++++++++++++++ .../runtime/FasterLookUpDataHolder.java | 3 ++ .../controller/topology/TopologyBuilder.java | 5 +-- .../topology/TopologyEventPublisher.java | 2 +- 6 files changed, 65 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e980b797/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java index 86e4ed8..59ccb1a 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java @@ -38,6 +38,7 @@ import org.apache.stratos.cloud.controller.util.CloudControllerUtil; import org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator; import org.apache.stratos.messaging.domain.topology.Member; import org.apache.stratos.messaging.domain.topology.MemberStatus; +import org.apache.stratos.messaging.util.Constants; import org.jclouds.compute.ComputeService; import org.jclouds.compute.domain.NodeMetadata; import org.jclouds.compute.domain.Template; @@ -46,6 +47,7 @@ import org.wso2.carbon.registry.core.exceptions.RegistryException; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.*; +import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; /** @@ -513,7 +515,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { ip = node.getPublicAddresses().iterator().next(); publicIp = ip; memberContext.setPublicIpAddress(ip); - log.info("Public IP Address has been set. " + memberContext.toString()); + log.info("Retrieving Public IP Address : " + memberContext.toString()); } // private IP @@ -521,7 +523,7 @@ public class CloudControllerServiceImpl implements CloudControllerService { node.getPrivateAddresses().iterator().hasNext()) { ip = node.getPrivateAddresses().iterator().next(); memberContext.setPrivateIpAddress(ip); - log.info("Private IP Address has been set. " + memberContext.toString()); + log.info("Retrieving Private IP Address. " + memberContext.toString()); } dataHolder.addMemberContext(memberContext); @@ -830,8 +832,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { throw new UnregisteredCartridgeException(msg); } - dataHolder.addClusterContext(new ClusterContext(clusterId, cartridgeType, payload, hostName)); - TopologyBuilder.handleClusterCreated(registrant); + Properties props = CloudControllerUtil.toJavaUtilProperties(registrant.getProperties()); + String property = props.getProperty(Constants.IS_LOAD_BALANCER); + boolean isLb = property != null ? Boolean.parseBoolean(property) : false; + + dataHolder.addClusterContext(new ClusterContext(clusterId, cartridgeType, payload, hostName, isLb)); + TopologyBuilder.handleClusterCreated(registrant, isLb); persist(); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e980b797/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterContext.java index b4f7a70..591be5a 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterContext.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterContext.java @@ -35,12 +35,14 @@ public class ClusterContext implements Serializable{ // payload as a String private String payload; private String hostName; + private boolean isLbCluster; - public ClusterContext(String clusterId, String cartridgeType, String payload, String hostName) { + public ClusterContext(String clusterId, String cartridgeType, String payload, String hostName, boolean isLbCluster) { this.clusterId = clusterId; this.cartridgeType = cartridgeType; this.payload = payload; this.setHostName(hostName); + this.isLbCluster = isLbCluster; } public String getClusterId() { @@ -70,4 +72,12 @@ public class ClusterContext implements Serializable{ this.hostName = hostName; } + public boolean isLbCluster() { + return isLbCluster; + } + + public void setLbCluster(boolean isLbCluster) { + this.isLbCluster = isLbCluster; + } + } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e980b797/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java index 168fd80..61c5665 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java @@ -151,4 +151,43 @@ public class MemberContext implements Serializable{ allocatedIpAddress + ", initTime=" + initTime + ", lbClusterId=" + lbClusterId + ", networkPartitionId=" + networkPartitionId + "]"; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((clusterId == null) ? 0 : clusterId.hashCode()); + result = prime * result + + ((memberId == null) ? 0 : memberId.hashCode()); + result = prime * result + ((nodeId == null) ? 0 : nodeId.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + MemberContext other = (MemberContext) obj; + if (clusterId == null) { + if (other.clusterId != null) + return false; + } else if (!clusterId.equals(other.clusterId)) + return false; + if (memberId == null) { + if (other.memberId != null) + return false; + } else if (!memberId.equals(other.memberId)) + return false; + if (nodeId == null) { + if (other.nodeId != null) + return false; + } else if (!nodeId.equals(other.nodeId)) + return false; + return true; + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e980b797/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java index 3da47ed..ec9d057 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java @@ -423,6 +423,9 @@ public class FasterLookUpDataHolder implements Serializable{ if((ctxts = clusterIdToMemberContext.get(ctxt.getClusterId())) == null) { ctxts = new ArrayList<MemberContext>(); } + if(ctxts.contains(ctxt)) { + ctxts.remove(ctxt); + } ctxts.add(ctxt); clusterIdToMemberContext.put(ctxt.getClusterId(), ctxts); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e980b797/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java index f98327b..510f87b 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java @@ -105,7 +105,7 @@ public class TopologyBuilder { } } - public static void handleClusterCreated(Registrant registrant) { + public static void handleClusterCreated(Registrant registrant, boolean isLb) { Topology topology = TopologyManager.getTopology(); Service service; try { @@ -114,9 +114,6 @@ public class TopologyBuilder { service = topology.getService(cartridgeType); Properties props = CloudControllerUtil.toJavaUtilProperties(registrant.getProperties()); - String property = props.getProperty(Constants.IS_LOAD_BALANCER); - boolean isLb = property != null ? Boolean.parseBoolean(property) : false; - Cluster cluster; String clusterId = registrant.getClusterId(); if (service.clusterExists(clusterId)) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e980b797/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java index 7a9120a..0209fe3 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java @@ -86,7 +86,7 @@ public class TopologyEventPublisher { public static void sendClusterRemovedEvent(ClusterContext ctxt) { - ClusterRemovedEvent clusterRemovedEvent = new ClusterRemovedEvent(ctxt.getCartridgeType(), ctxt.getClusterId(), false); + ClusterRemovedEvent clusterRemovedEvent = new ClusterRemovedEvent(ctxt.getCartridgeType(), ctxt.getClusterId(), ctxt.isLbCluster()); if(log.isInfoEnabled()) { log.info(String.format("Publishing cluster removed event: [service] %s [cluster] %s", ctxt.getCartridgeType(), ctxt.getClusterId()));
