Repository: stratos
Updated Branches:
  refs/heads/master cb31c0d69 -> 9e10aecae


tracking instance id to topology Cluster


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9e10aeca
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9e10aeca
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9e10aeca

Branch: refs/heads/master
Commit: 9e10aecae0a57ea41203c300ccf8bc2c3170b9fc
Parents: cb31c0d
Author: Isuru Haththotuwa <[email protected]>
Authored: Fri Nov 21 16:56:23 2014 +0530
Committer: Isuru Haththotuwa <[email protected]>
Committed: Fri Nov 21 16:57:50 2014 +0530

----------------------------------------------------------------------
 .../publisher/ClusterStatusEventPublisher.java  | 23 +++++----
 .../application/ApplicationMonitorFactory.java  |  4 +-
 .../status/checker/StatusChecker.java           | 10 ++--
 .../impl/CloudControllerServiceImpl.java        |  2 +-
 .../controller/topology/TopologyBuilder.java    | 24 ++++-----
 .../domain/applications/ParentComponent.java    | 11 +----
 .../context/ClusterInstanceContext.java         |  4 +-
 .../messaging/domain/topology/Cluster.java      | 51 +++++++++++++++-----
 ...licationClustersCreatedMessageProcessor.java |  4 +-
 .../topology/ClusterActivatedProcessor.java     |  6 +--
 .../ClusterCreatedMessageProcessor.java         |  2 +-
 .../topology/ClusterInActivateProcessor.java    |  6 +--
 .../topology/ClusterResetMessageProcessor.java  |  8 ++-
 .../topology/ClusterTerminatedProcessor.java    |  6 +--
 .../topology/ClusterTerminatingProcessor.java   |  6 +--
 .../bean/util/converter/PojoConverter.java      |  2 +-
 16 files changed, 90 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
index 23312f5..020e793 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/ClusterStatusEventPublisher.java
@@ -28,7 +28,6 @@ import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.event.Event;
 import org.apache.stratos.messaging.event.cluster.status.*;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-import org.apache.stratos.messaging.util.Constants;
 import org.apache.stratos.messaging.util.Util;
 
 /**
@@ -44,7 +43,7 @@ public class ClusterStatusEventPublisher {
             Service service = 
TopologyManager.getTopology().getService(serviceName);
             if (service != null) {
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.isStateTransitionValid(ClusterStatus.Created)) {
+                if (cluster.isStateTransitionValid(ClusterStatus.Created, 
null)) {
                     if (log.isInfoEnabled()) {
                         log.info("Publishing Cluster created event for 
[application]: " + appId +
                                 " [cluster]: " + clusterId);
@@ -68,8 +67,8 @@ public class ClusterStatusEventPublisher {
             Service service = 
TopologyManager.getTopology().getService(serviceName);
             if (service != null) {
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.isStateTransitionValid(ClusterStatus.Created) &&
-                        cluster.getStatus() != ClusterStatus.Created) {
+                if (cluster.isStateTransitionValid(ClusterStatus.Created, 
null) &&
+                        cluster.getStatus(null) != ClusterStatus.Created) {
                     ClusterStatusClusterResetEvent clusterCreatedEvent =
                             new ClusterStatusClusterResetEvent(appId, 
serviceName, clusterId);
 
@@ -89,8 +88,8 @@ public class ClusterStatusEventPublisher {
             Service service = 
TopologyManager.getTopology().getService(serviceName);
             if (service != null) {
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.isStateTransitionValid(ClusterStatus.Active) &&
-                        cluster.getStatus() != ClusterStatus.Active) {
+                if (cluster.isStateTransitionValid(ClusterStatus.Active, null) 
&&
+                        cluster.getStatus(null) != ClusterStatus.Active) {
                     ClusterStatusClusterActivatedEvent clusterActivatedEvent =
                             new ClusterStatusClusterActivatedEvent(appId, 
serviceName, clusterId);
 
@@ -110,8 +109,8 @@ public class ClusterStatusEventPublisher {
             Service service = 
TopologyManager.getTopology().getService(serviceName);
             if (service != null) {
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.isStateTransitionValid(ClusterStatus.Inactive) &&
-                                                cluster.getStatus() != 
ClusterStatus.Inactive) {
+                if (cluster.isStateTransitionValid(ClusterStatus.Inactive, 
null) &&
+                                                cluster.getStatus(null) != 
ClusterStatus.Inactive) {
                     ClusterStatusClusterInactivateEvent clusterInActivateEvent 
=
                             new ClusterStatusClusterInactivateEvent(appId, 
serviceName, clusterId);
 
@@ -133,8 +132,8 @@ public class ClusterStatusEventPublisher {
             Service service = 
TopologyManager.getTopology().getService(serviceName);
             if (service != null) {
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.isStateTransitionValid(ClusterStatus.Terminating) 
&&
-                        cluster.getStatus() != ClusterStatus.Terminating) {
+                if (cluster.isStateTransitionValid(ClusterStatus.Terminating, 
null) &&
+                        cluster.getStatus(null) != ClusterStatus.Terminating) {
                     ClusterStatusClusterTerminatingEvent 
appStatusClusterTerminatingEvent =
                             new ClusterStatusClusterTerminatingEvent(appId, 
serviceName, clusterId);
 
@@ -156,8 +155,8 @@ public class ClusterStatusEventPublisher {
             Service service = 
TopologyManager.getTopology().getService(serviceName);
             if (service != null) {
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.isStateTransitionValid(ClusterStatus.Terminated) &&
-                        cluster.getStatus() != ClusterStatus.Terminated) {
+                if (cluster.isStateTransitionValid(ClusterStatus.Terminated, 
null) &&
+                        cluster.getStatus(null) != ClusterStatus.Terminated) {
                     ClusterStatusClusterTerminatedEvent 
appStatusClusterTerminatedEvent =
                             new ClusterStatusClusterTerminatedEvent(appId, 
serviceName, clusterId);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
index 45a6a36..cf6200a 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java
@@ -222,9 +222,9 @@ public class ApplicationMonitorFactory {
                 clusterMonitor.setHasGroupScalingDependent(false);
             }
             //setting the status of the cluster, if it doesn't match with 
Topology cluster status.
-            if (cluster.getStatus() != clusterMonitor.getStatus()) {
+            if (cluster.getStatus(null) != clusterMonitor.getStatus()) {
                 //updating the status, so that it will notify the parent
-                clusterMonitor.setStatus(cluster.getStatus());
+                clusterMonitor.setStatus(cluster.getStatus(null));
             } else {
                 if(!cluster.hasMembers()) {
                     
StatusChecker.getInstance().onMemberStatusChange(clusterId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
index 97dfed8..cdef592 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
@@ -113,7 +113,7 @@ public class StatusChecker {
                                 Application application = 
ApplicationHolder.getApplications().getApplication(appId);
                                 //if all members removed from the cluster and 
cluster is in terminating,
                                 // either it has to be terminated or Reset
-                                if (!clusterMonitorHasMembers && 
cluster.getStatus() == ClusterStatus.Terminating) {
+                                if (!clusterMonitorHasMembers && 
cluster.getStatus(null) == ClusterStatus.Terminating) {
                                     if (application.getStatus(null) == 
ApplicationStatus.Terminating) {
                                         if (log.isInfoEnabled()) {
                                             log.info("Publishing Cluster 
terminated event for [application]: " + appId +
@@ -132,7 +132,7 @@ public class StatusChecker {
 
                                 } else {
                                     //if the cluster is not active and, if it 
is in Active state
-                                    if (!clusterActive && cluster.getStatus() 
== ClusterStatus.Active) {
+                                    if (!clusterActive && 
cluster.getStatus(null) == ClusterStatus.Active) {
                                         if (log.isInfoEnabled()) {
                                             log.info("Publishing Cluster 
in-activate event for [application]: "
                                                     + monitor.getAppId() + " 
[cluster]: " + clusterId);
@@ -141,7 +141,7 @@ public class StatusChecker {
                                                 monitor.getServiceId(), 
clusterId);
                                     } else {
                                         log.info("Cluster has non terminated 
[members] and in the [status] "
-                                                + 
cluster.getStatus().toString());
+                                                + 
cluster.getStatus(null).toString());
                                     }
                                 }
                             } finally {
@@ -434,7 +434,7 @@ public class StatusChecker {
         for (Map.Entry<String, ClusterDataHolder> clusterDataHolderEntry : 
clusterData.entrySet()) {
             Service service = 
TopologyManager.getTopology().getService(clusterDataHolderEntry.getValue().getServiceType());
             Cluster cluster = 
service.getCluster(clusterDataHolderEntry.getValue().getClusterId());
-            if (cluster.getStatus() == ClusterStatus.Inactive) {
+            if (cluster.getStatus(null) == ClusterStatus.Inactive) {
                 clusterStat = true;
                 return clusterStat;
             } else {
@@ -462,7 +462,7 @@ public class StatusChecker {
             try {
                 Service service = 
TopologyManager.getTopology().getService(serviceName);
                 Cluster cluster = service.getCluster(clusterId);
-                if (cluster.getStatus() == status) {
+                if (cluster.getStatus(null) == status) {
                     clusterStat = true;
                 } else {
                     clusterStat = false;

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/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 2f09d8d..5e34c88 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
@@ -1941,7 +1941,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                     appClusterCtxt.getDeploymentPolicyName(), 
appClusterCtxt.getAutoscalePolicyName(), appId);
             newCluster.setLbCluster(false);
             newCluster.setTenantRange(appClusterCtxt.getTenantRange());
-            newCluster.setStatus(ClusterStatus.Created);
+            newCluster.setStatus(ClusterStatus.Created, null);
             
newCluster.setHostNames(Arrays.asList(appClusterCtxt.getHostName()));
             Cartridge cartridge = 
dataHolder.getCartridge(appClusterCtxt.getCartridgeType());
             if(cartridge.getDeployerType() != null &&

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/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 a14348c..3f56d3d 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
@@ -140,7 +140,7 @@ public class TopologyBuilder {
                 //cluster.setStatus(Status.Created);
                 cluster.setHostNames(event.getHostNames());
                 cluster.setTenantRange(event.getTenantRange());
-                cluster.setStatus(ClusterStatus.Created);
+                cluster.setStatus(ClusterStatus.Created, null);
                 service.addCluster(cluster);
                 TopologyManager.updateTopology(topology);
             }
@@ -253,12 +253,12 @@ public class TopologyBuilder {
             }
 
             // update the cluster status to Created
-            if (!cluster.isStateTransitionValid(ClusterStatus.Created)) {
-                log.error("Invalid state transition from " + 
cluster.getStatus() + " to " +
+            if (!cluster.isStateTransitionValid(ClusterStatus.Created, null)) {
+                log.error("Invalid state transition from " + 
cluster.getStatus(null) + " to " +
                         ClusterStatus.Created + " for cluster id " + 
event.getClusterId());
             }
             // forcefully update the status
-            cluster.setStatus(ClusterStatus.Created);
+            cluster.setStatus(ClusterStatus.Created, null);
             TopologyManager.updateTopology(topology);
 
         } finally {
@@ -725,7 +725,7 @@ public class TopologyBuilder {
         try {
             TopologyManager.acquireWriteLock();
             //cluster.setStatus(Status.Activated);
-            cluster.setStatus(ClusterStatus.Active);
+            cluster.setStatus(ClusterStatus.Active, null);
 
             log.info("Cluster activated adding status started for" + 
cluster.getClusterId());
 
@@ -763,7 +763,7 @@ public class TopologyBuilder {
         try {
             TopologyManager.acquireWriteLock();
             //cluster.setStatus(Status.Activated);
-            cluster.setStatus(ClusterStatus.Inactive);
+            cluster.setStatus(ClusterStatus.Inactive, null);
 
             log.info("Cluster in-active adding status started for " + 
cluster.getClusterId());
 
@@ -794,12 +794,12 @@ public class TopologyBuilder {
             Cluster cluster = topology.getService(event.getServiceName()).
                     getCluster(event.getClusterId());
 
-            if (!cluster.isStateTransitionValid(ClusterStatus.Terminated)) {
-                log.error("Invalid state transfer from " + cluster.getStatus() 
+ " to " +
+            if (!cluster.isStateTransitionValid(ClusterStatus.Terminated, 
null)) {
+                log.error("Invalid state transfer from " + 
cluster.getStatus(null) + " to " +
                         ClusterStatus.Terminated);
             }
             // forcefully update status
-            cluster.setStatus(ClusterStatus.Terminated);
+            cluster.setStatus(ClusterStatus.Terminated, null);
 
             TopologyManager.updateTopology(topology);
         } finally {
@@ -821,12 +821,12 @@ public class TopologyBuilder {
             Cluster cluster = topology.getService(event.getServiceName()).
                     getCluster(event.getClusterId());
 
-            if (!cluster.isStateTransitionValid(ClusterStatus.Terminating)) {
-                log.error("Invalid state transfer from " + cluster.getStatus() 
+ " to " +
+            if (!cluster.isStateTransitionValid(ClusterStatus.Terminating, 
null)) {
+                log.error("Invalid state transfer from " + 
cluster.getStatus(null) + " to " +
                         ClusterStatus.Terminating);
             }
             // forcefully update status
-            cluster.setStatus(ClusterStatus.Terminating);
+            cluster.setStatus(ClusterStatus.Terminating, null);
 
             TopologyManager.updateTopology(topology);
         } finally {

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
index c3831c2..fd4745b 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
@@ -33,7 +33,6 @@ import java.util.*;
 
 public abstract class ParentComponent<T extends InstanceContext> implements 
Serializable {
 
-    private static final Log log = LogFactory.getLog(ParentComponent.class);
 
     // Dependency Order
     private DependencyOrder dependencyOrder;
@@ -213,15 +212,7 @@ public abstract class ParentComponent<T extends 
InstanceContext> implements Seri
      */
     public void addInstanceContext (String instanceId, T instanceContext) {
 
-        synchronized (instanceIdToInstanceContextMap) {
-            if (instanceIdToInstanceContextMap.get(instanceId) != null) {
-                if (log.isDebugEnabled()) {
-                    log.debug("InstanceContext for instance id " + instanceId 
+ " already exists");
-                }
-            } else {
-                instanceIdToInstanceContextMap.put(instanceId, 
instanceContext);
-            }
-        }
+        instanceIdToInstanceContextMap.put(instanceId, instanceContext);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/context/ClusterInstanceContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/context/ClusterInstanceContext.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/context/ClusterInstanceContext.java
index 069f545..4475d67 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/context/ClusterInstanceContext.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/context/ClusterInstanceContext.java
@@ -30,10 +30,10 @@ public class ClusterInstanceContext extends InstanceContext 
implements LifeCycle
     // Life cycle state manager
     protected LifeCycleStateManager<ClusterStatus> lifeCycleStateManager;
 
-    public ClusterInstanceContext(String alias, String instanceId) {
+    public ClusterInstanceContext(String alias, String clusterId, String 
instanceId) {
         super(alias, instanceId);
         this.lifeCycleStateManager = new 
LifeCycleStateManager<ClusterStatus>(ClusterStatus.Created,
-                alias + "_" + instanceId);
+                clusterId + "_" + instanceId);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
index 941b0f6..156c6b5 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
@@ -20,6 +20,7 @@
 package org.apache.stratos.messaging.domain.topology;
 
 import org.apache.commons.lang.StringUtils;
+import 
org.apache.stratos.messaging.domain.instance.context.ClusterInstanceContext;
 import 
org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager;
 import org.apache.stratos.messaging.util.Util;
 import org.apache.stratos.messaging.util.bean.type.map.MapAdapter;
@@ -34,7 +35,7 @@ import java.util.*;
  * Key: serviceName, clusterId
  */
 @XmlRootElement
-public class Cluster implements Serializable, 
LifeCycleStateTransitionBehavior<ClusterStatus> {
+public class Cluster implements Serializable {
 
     private static final long serialVersionUID = -361960242360176077L;
 
@@ -58,7 +59,8 @@ public class Cluster implements Serializable, 
LifeCycleStateTransitionBehavior<C
     private String loadBalanceAlgorithmName;
     @XmlJavaTypeAdapter(MapAdapter.class)
     private Properties properties;
-    private LifeCycleStateManager<ClusterStatus> clusterStateManager;
+    protected Map<String, ClusterInstanceContext> 
instanceIdToInstanceContextMap;
+    //private LifeCycleStateManager<ClusterStatus> clusterStateManager;
 
     public Cluster(String serviceName, String clusterId, String 
deploymentPolicyName,
                    String autoscalePolicyName, String appId) {
@@ -69,7 +71,8 @@ public class Cluster implements Serializable, 
LifeCycleStateTransitionBehavior<C
         this.setHostNames(new ArrayList<String>());
         this.memberMap = new HashMap<String, Member>();
         this.appId = appId;
-        this.clusterStateManager = new 
LifeCycleStateManager<ClusterStatus>(ClusterStatus.Created, clusterId);
+        this.instanceIdToInstanceContextMap = new HashMap<String, 
ClusterInstanceContext>();
+        //this.clusterStateManager = new 
LifeCycleStateManager<ClusterStatus>(ClusterStatus.Created, clusterId);
         // temporary; should be removed
         //this.status = ClusterStatus.Created;
     }
@@ -210,23 +213,45 @@ public class Cluster implements Serializable, 
LifeCycleStateTransitionBehavior<C
         return partitionIds.keySet();
     }
 
-    @Override
-    public boolean isStateTransitionValid(ClusterStatus newState) {
-        return clusterStateManager.isStateTransitionValid(newState);
+    public boolean isStateTransitionValid(ClusterStatus newState, String 
clusterInstanceId) {
+        return 
instanceIdToInstanceContextMap.get(clusterInstanceId).isStateTransitionValid(newState);
     }
 
-    @Override
-    public Stack<ClusterStatus> getTransitionedStates() {
-        return clusterStateManager.getStateStack();
+    public Stack<ClusterStatus> getTransitionedStates(String 
clusterInstanceId) {
+        return 
instanceIdToInstanceContextMap.get(clusterInstanceId).getTransitionedStates();
     }
 
-    public ClusterStatus getStatus() {
+    public ClusterStatus getStatus(String applicationInstanceId) {
         //return status;
-        return clusterStateManager.getCurrentState();
+        return 
instanceIdToInstanceContextMap.get(applicationInstanceId).getStatus();
     }
 
-    public boolean setStatus(ClusterStatus newStatus) {
-        return clusterStateManager.changeState(newStatus);
+    public boolean setStatus(ClusterStatus newStatus, String 
applicationInstanceId) {
+        return 
instanceIdToInstanceContextMap.get(applicationInstanceId).setStatus(newStatus);
+    }
+
+    public void addInstanceContext (String instanceId, ClusterInstanceContext 
instanceContext) {
+
+        instanceIdToInstanceContextMap.put(instanceId, instanceContext);
+    }
+
+    public ClusterInstanceContext getInstanceContexts (String instanceId) {
+        // if map is empty, return null
+        if (instanceIdToInstanceContextMap.isEmpty()) {
+            return null;
+        }
+
+        // if instanceId is null, just get the first InstanceContext
+        if (instanceId == null) {
+            return 
instanceIdToInstanceContextMap.entrySet().iterator().next().getValue();
+        }
+
+        return instanceIdToInstanceContextMap.get(instanceId);
+    }
+
+    public int getInstanceContextCount () {
+
+        return instanceIdToInstanceContextMap.keySet().size();
     }
 
     public boolean equals(Object other) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationClustersCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationClustersCreatedMessageProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationClustersCreatedMessageProcessor.java
index 0c05504..a1e2cf7 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationClustersCreatedMessageProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationClustersCreatedMessageProcessor.java
@@ -25,12 +25,10 @@ import 
org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.domain.topology.Topology;
 import 
org.apache.stratos.messaging.event.topology.ApplicationClustersCreatedEvent;
-import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
 import 
org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter;
 import 
org.apache.stratos.messaging.message.filter.topology.TopologyServiceFilter;
 import org.apache.stratos.messaging.message.processor.MessageProcessor;
 import 
org.apache.stratos.messaging.message.processor.topology.updater.TopologyUpdater;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.apache.stratos.messaging.util.Util;
 
 import java.util.List;
@@ -121,7 +119,7 @@ public class ApplicationClustersCreatedMessageProcessor 
extends MessageProcessor
 
                     // Apply changes to the topology
                     service.addCluster(cluster);
-                    cluster.setStatus(ClusterStatus.Created);
+                    cluster.setStatus(ClusterStatus.Created, null);
                     if (log.isInfoEnabled()) {
                         log.info(String.format("Cluster created: %s",
                                 cluster.toString()));

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java
index 3c5131b..edc47ee 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java
@@ -118,10 +118,10 @@ public class ClusterActivatedProcessor extends 
MessageProcessor {
             }
         } else {
             // Apply changes to the topology
-            if (!cluster.isStateTransitionValid(ClusterStatus.Active)) {
-                log.error("Invalid State Transition from " + 
cluster.getStatus() + " to " + ClusterStatus.Active);
+            if (!cluster.isStateTransitionValid(ClusterStatus.Active, null)) {
+                log.error("Invalid State Transition from " + 
cluster.getStatus(null) + " to " + ClusterStatus.Active);
             }
-            cluster.setStatus(ClusterStatus.Active);
+            cluster.setStatus(ClusterStatus.Active, null);
 
         }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterCreatedMessageProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterCreatedMessageProcessor.java
index 128c322..27ef1a9 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterCreatedMessageProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterCreatedMessageProcessor.java
@@ -125,7 +125,7 @@ public class ClusterCreatedMessageProcessor extends 
MessageProcessor {
 
             // Apply changes to the topology
             service.addCluster(cluster);
-            cluster.setStatus(ClusterStatus.Created);
+            cluster.setStatus(ClusterStatus.Created, null);
             if (log.isInfoEnabled()) {
                 log.info(String.format("Cluster created: %s",
                         cluster.toString()));

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInActivateProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInActivateProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInActivateProcessor.java
index 4dc6453..c4c651b 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInActivateProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInActivateProcessor.java
@@ -117,10 +117,10 @@ public class ClusterInActivateProcessor extends 
MessageProcessor {
             }
         } else {
             // Apply changes to the topology
-            if (!cluster.isStateTransitionValid(ClusterStatus.Inactive)) {
-                log.error("Invalid State Transition from " + 
cluster.getStatus() + " to " + ClusterStatus.Inactive);
+            if (!cluster.isStateTransitionValid(ClusterStatus.Inactive, null)) 
{
+                log.error("Invalid State Transition from " + 
cluster.getStatus(null) + " to " + ClusterStatus.Inactive);
             }
-            cluster.setStatus(ClusterStatus.Inactive);
+            cluster.setStatus(ClusterStatus.Inactive, null);
 
         }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterResetMessageProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterResetMessageProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterResetMessageProcessor.java
index a84333f..fc18e2c 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterResetMessageProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterResetMessageProcessor.java
@@ -24,8 +24,6 @@ import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.domain.topology.Topology;
-import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
-import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
 import org.apache.stratos.messaging.event.topology.ClusterResetEvent;
 import 
org.apache.stratos.messaging.message.filter.topology.TopologyClusterFilter;
 import 
org.apache.stratos.messaging.message.filter.topology.TopologyServiceFilter;
@@ -117,10 +115,10 @@ public class ClusterResetMessageProcessor extends 
MessageProcessor {
             }
         } else {
             // Apply changes to the topology
-            if (!cluster.isStateTransitionValid(ClusterStatus.Created)) {
-                log.error("Invalid State Transition from " + 
cluster.getStatus() + " to " + ClusterStatus.Created);
+            if (!cluster.isStateTransitionValid(ClusterStatus.Created, null)) {
+                log.error("Invalid State Transition from " + 
cluster.getStatus(null) + " to " + ClusterStatus.Created);
             }
-            cluster.setStatus(ClusterStatus.Created);
+            cluster.setStatus(ClusterStatus.Created, null);
 
         }
         // Notify event listeners

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatedProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatedProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatedProcessor.java
index 72f32d5..7e5b5e8 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatedProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatedProcessor.java
@@ -118,10 +118,10 @@ public class ClusterTerminatedProcessor extends 
MessageProcessor {
             }
         } else {
             // Apply changes to the topology
-            if (!cluster.isStateTransitionValid(ClusterStatus.Terminated)) {
-                log.error("Invalid State Transition from " + 
cluster.getStatus() + " to " + ClusterStatus.Terminated);
+            if (!cluster.isStateTransitionValid(ClusterStatus.Terminated, 
null)) {
+                log.error("Invalid State Transition from " + 
cluster.getStatus(null) + " to " + ClusterStatus.Terminated);
             }
-            cluster.setStatus(ClusterStatus.Terminated);
+            cluster.setStatus(ClusterStatus.Terminated, null);
 
         }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatingProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatingProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatingProcessor.java
index 6dcb07d..6941fab 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatingProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterTerminatingProcessor.java
@@ -118,10 +118,10 @@ public class ClusterTerminatingProcessor extends 
MessageProcessor {
             }
         } else {
             // Apply changes to the topology
-            if (!cluster.isStateTransitionValid(ClusterStatus.Terminating)) {
-                log.error("Invalid State Transition from " + 
cluster.getStatus() + " to " + ClusterStatus.Terminating);
+            if (!cluster.isStateTransitionValid(ClusterStatus.Terminating, 
null)) {
+                log.error("Invalid State Transition from " + 
cluster.getStatus(null) + " to " + ClusterStatus.Terminating);
             }
-            cluster.setStatus(ClusterStatus.Terminating);
+            cluster.setStatus(ClusterStatus.Terminating, null);
 
         }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/9e10aeca/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index 775f431..bbdcae4 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
@@ -428,7 +428,7 @@ public class PojoConverter {
         cluster1.property = getPropertyBeans(cluster.getProperties());
         cluster1.member = new ArrayList<Member>();
         cluster1.hostNames = new ArrayList<String>();
-        cluster1.status = cluster.getStatus().toString();
+        cluster1.status = cluster.getStatus(null).toString();
 
         for (org.apache.stratos.messaging.domain.topology.Member tmp : 
cluster.getMembers()) {
             Member member = new Member();

Reply via email to