Repository: stratos
Updated Branches:
  refs/heads/master 7587568a7 -> dd68738a4


http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/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 c7d6d02..9e9e84d 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
@@ -98,7 +98,7 @@ public class ApplicationMonitorFactory {
      * @throws TopologyInConsistentException throws while traversing thr 
topology
      */
     public static Monitor getGroupMonitor(ParentComponentMonitor parentMonitor,
-                                          ApplicationChildContext context, 
String appId, List<String> instanceId)
+                                          ApplicationChildContext context, 
String appId, List<String> instanceIds)
             throws DependencyBuilderException,
             TopologyInConsistentException {
         GroupMonitor groupMonitor;
@@ -107,7 +107,7 @@ public class ApplicationMonitorFactory {
         try {
             Group group = ApplicationHolder.getApplications().
                     getApplication(appId).getGroupRecursively(context.getId());
-            groupMonitor = new GroupMonitor(group, appId, instanceId);
+            groupMonitor = new GroupMonitor(group, appId, instanceIds);
             groupMonitor.setAppId(appId);
             if (parentMonitor != null) {
                 groupMonitor.setParent(parentMonitor);
@@ -126,6 +126,9 @@ public class ApplicationMonitorFactory {
                         groupMonitor.setHasGroupScalingDependent(true);
                     }
                 }
+
+                //Starting the minimum dependencies
+                groupMonitor.startMinimumDependencies(group, instanceIds);
                 //TODO*********** make it sync with the topology in the restart
 
                 /*if (group.getStatus() != groupMonitor.getStatus()) {
@@ -154,7 +157,7 @@ public class ApplicationMonitorFactory {
      */
     public static ApplicationMonitor getApplicationMonitor(String appId)
             throws DependencyBuilderException,
-            TopologyInConsistentException {
+            TopologyInConsistentException, PolicyValidationException {
         ApplicationMonitor applicationMonitor;
         ApplicationHolder.acquireReadLock();
         try {
@@ -162,6 +165,7 @@ public class ApplicationMonitorFactory {
             if (application != null) {
                 applicationMonitor = new ApplicationMonitor(application);
                 applicationMonitor.setHasStartupDependents(false);
+                applicationMonitor.startMinimumDependencies(application);
 
             } else {
                 String msg = "[Application] " + appId + " cannot be found in 
the Topology";

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index 558c612..197a337 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -71,9 +71,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
                     clusterId, networkPartitionId, value));
         }
 
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId ,networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setAverageLoadAverage(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId 
,networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            clusterLevelNetworkPartitionContext.setAverageLoadAverage(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -95,9 +95,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Grad of load avg event: [cluster] %s 
[network-partition] %s [value] %s",
                     clusterId, networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setLoadAverageGradient(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            clusterLevelNetworkPartitionContext.setLoadAverageGradient(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -118,9 +118,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Second Derivation of load avg event: 
[cluster] %s "
                     + "[network-partition] %s [value] %s", clusterId, 
networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setLoadAverageSecondDerivative(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setLoadAverageSecondDerivative(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -141,9 +141,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Avg Memory Consumption event: [cluster] 
%s [network-partition] %s "
                     + "[value] %s", clusterId, networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setAverageMemoryConsumption(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setAverageMemoryConsumption(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String
@@ -165,9 +165,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Grad of Memory Consumption event: 
[cluster] %s "
                     + "[network-partition] %s [value] %s", clusterId, 
networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setMemoryConsumptionGradient(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setMemoryConsumptionGradient(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -188,9 +188,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Second Derivation of Memory Consumption 
event: [cluster] %s "
                     + "[network-partition] %s [value] %s", clusterId, 
networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            
networkPartitionContext.setMemoryConsumptionSecondDerivative(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setMemoryConsumptionSecondDerivative(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -210,9 +210,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
                     clusterId, networkPartitionId, floatValue));
         }
 
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(null, networkPartitionId);
-        if(null != networkPartitionContext){
-            
networkPartitionContext.setAverageRequestsServedPerInstance(floatValue);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, 
networkPartitionId);
+        if(null != clusterLevelNetworkPartitionContext){
+            
clusterLevelNetworkPartitionContext.setAverageRequestsServedPerInstance(floatValue);
 
         } else {
             if (log.isDebugEnabled()) {
@@ -241,9 +241,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Average Rif event: [cluster] %s 
[network-partition] %s [value] %s",
                     clusterId, networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setAverageRequestsInFlight(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setAverageRequestsInFlight(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -264,9 +264,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Gradient of Rif event: [cluster] %s 
[network-partition] %s [value] %s",
                     clusterId, networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setRequestsInFlightGradient(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setRequestsInFlightGradient(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -287,9 +287,9 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             log.debug(String.format("Second derivative of Rif event: [cluster] 
%s "
                     + "[network-partition] %s [value] %s", clusterId, 
networkPartitionId, value));
         }
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        if (null != networkPartitionContext) {
-            networkPartitionContext.setRequestsInFlightSecondDerivative(value);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        if (null != clusterLevelNetworkPartitionContext) {
+            
clusterLevelNetworkPartitionContext.setRequestsInFlightSecondDerivative(value);
         } else {
             if (log.isDebugEnabled()) {
                 log.debug(String.format("Network partition context is not 
available for :" +
@@ -306,7 +306,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String memberId = memberAverageMemoryConsumptionEvent.getMemberId();
         Member member = getMemberByMemberId(memberId);
         String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
         ClusterLevelPartitionContext partitionCtxt = 
networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
         MemberStatsContext memberStatsContext = 
partitionCtxt.getMemberStatsContext(memberId);
         if (null == memberStatsContext) {
@@ -327,7 +327,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String memberId = memberGradientOfMemoryConsumptionEvent.getMemberId();
         Member member = getMemberByMemberId(memberId);
         String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
         ClusterLevelPartitionContext partitionCtxt = 
networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
         MemberStatsContext memberStatsContext = 
partitionCtxt.getMemberStatsContext(memberId);
         if (null == memberStatsContext) {
@@ -354,7 +354,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String memberId = memberAverageLoadAverageEvent.getMemberId();
         Member member = getMemberByMemberId(memberId);
         String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
         ClusterLevelPartitionContext partitionCtxt = 
networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
         MemberStatsContext memberStatsContext = 
partitionCtxt.getMemberStatsContext(memberId);
         if (null == memberStatsContext) {
@@ -375,7 +375,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String memberId = memberGradientOfLoadAverageEvent.getMemberId();
         Member member = getMemberByMemberId(memberId);
         String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
         ClusterLevelPartitionContext partitionCtxt = 
networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
         MemberStatsContext memberStatsContext = 
partitionCtxt.getMemberStatsContext(memberId);
         if (null == memberStatsContext) {
@@ -396,7 +396,8 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String memberId = 
memberSecondDerivativeOfLoadAverageEvent.getMemberId();
         Member member = getMemberByMemberId(memberId);
         String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
         ClusterLevelPartitionContext partitionCtxt = 
networkPartitionCtxt.getPartitionCtxt(member.getPartitionId());
         MemberStatsContext memberStatsContext = 
partitionCtxt.getMemberStatsContext(memberId);
         if (null == memberStatsContext) {
@@ -429,7 +430,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
             return;
         }
 
-        NetworkPartitionContext nwPartitionCtxt;
+        ClusterLevelNetworkPartitionContext nwPartitionCtxt;
         nwPartitionCtxt = getNetworkPartitionCtxt(instanceId, member);
         String partitionId = getPartitionOfMember(memberId);
         ClusterLevelPartitionContext partitionCtxt = 
nwPartitionCtxt.getPartitionCtxt(partitionId);
@@ -469,15 +470,15 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String networkPartitionId = 
memberActivatedEvent.getNetworkPartitionId();
         String partitionId = memberActivatedEvent.getPartitionId();
         String memberId = memberActivatedEvent.getMemberId();
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        ClusterLevelPartitionContext clusterMonitorPartitionContext;
-        clusterMonitorPartitionContext = 
networkPartitionCtxt.getPartitionCtxt(partitionId);
-        clusterMonitorPartitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+        ClusterLevelPartitionContext clusterLevelPartitionContext;
+        clusterLevelPartitionContext = 
networkPartitionCtxt.getPartitionCtxt(partitionId);
+        clusterLevelPartitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
         if (log.isInfoEnabled()) {
             log.info(String.format("Member stat context has been added 
successfully: "
                     + "[member] %s", memberId));
         }
-        
clusterMonitorPartitionContext.movePendingMemberToActiveMembers(memberId);
+        
clusterLevelPartitionContext.movePendingMemberToActiveMembers(memberId);
         
StatusChecker.getInstance().onMemberStatusChange(memberActivatedEvent.getClusterId());
     }
 
@@ -489,7 +490,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String partitionId = maintenanceModeEvent.getPartitionId();
         String memberId = maintenanceModeEvent.getMemberId();
         String instanceId = maintenanceModeEvent.getInstanceId();
-        NetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
+        ClusterLevelNetworkPartitionContext networkPartitionCtxt = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
         ClusterLevelPartitionContext clusterMonitorPartitionContext = 
networkPartitionCtxt.getPartitionCtxt(partitionId);
         clusterMonitorPartitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
         if (log.isDebugEnabled()) {
@@ -502,7 +503,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
     @Override
     public void handleMemberReadyToShutdownEvent(MemberReadyToShutdownEvent 
memberReadyToShutdownEvent) {
 
-        NetworkPartitionContext nwPartitionCtxt;
+        ClusterLevelNetworkPartitionContext nwPartitionCtxt;
         String networkPartitionId = 
memberReadyToShutdownEvent.getNetworkPartitionId();
         String instanceId = memberReadyToShutdownEvent.getInstanceId();
         nwPartitionCtxt = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
@@ -553,8 +554,8 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         String clusterId = memberTerminatedEvent.getClusterId();
         String instanceId = memberTerminatedEvent.getInstanceId();
         String partitionId = memberTerminatedEvent.getPartitionId();
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(instanceId, networkPartitionId);
-        ClusterLevelPartitionContext clusterMonitorPartitionContext = 
networkPartitionContext.getPartitionCtxt(partitionId);
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, 
networkPartitionId);
+        ClusterLevelPartitionContext clusterMonitorPartitionContext = 
clusterLevelNetworkPartitionContext.getPartitionCtxt(partitionId);
         clusterMonitorPartitionContext.removeMemberStatsContext(memberId);
 
         if 
(clusterMonitorPartitionContext.removeTerminationPendingMember(memberId)) {
@@ -641,7 +642,7 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         Thread memberTerminator = new Thread(new Runnable() {
             public void run() {
 
-                for (NetworkPartitionContext networkPartitionContext : 
getAllNetworkPartitionCtxts().values()) {
+                for (ClusterLevelNetworkPartitionContext 
networkPartitionContext : getAllNetworkPartitionCtxts().values()) {
                     for (ClusterLevelPartitionContext partitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
                         //if (log.isDebugEnabled()) {
                         log.info("Starting to terminate all members in cluster 
[" + getClusterId() + "] Network Partition [ " +
@@ -678,15 +679,15 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         memberTerminator.start();
     }
 
-    public Map<String, NetworkPartitionContext> 
getNetworkPartitionCtxts(String instanceId) {
+    public Map<String, ClusterLevelNetworkPartitionContext> 
getNetworkPartitionCtxts(String instanceId) {
 
         VMClusterContext vmClusterContext = (VMClusterContext) 
instanceIdToClusterContextMap.get(instanceId);
         return vmClusterContext.getNetworkPartitionCtxts();
     }
 
-    public Map<String, NetworkPartitionContext> getAllNetworkPartitionCtxts() {
+    public Map<String, ClusterLevelNetworkPartitionContext> 
getAllNetworkPartitionCtxts() {
 
-        Map<String, NetworkPartitionContext> nwPartitionIdToNwPartitionMap = 
new HashMap<String, NetworkPartitionContext>();
+        Map<String, ClusterLevelNetworkPartitionContext> 
nwPartitionIdToNwPartitionMap = new HashMap<String, 
ClusterLevelNetworkPartitionContext>();
 
         for (AbstractClusterContext clusterContext : 
instanceIdToClusterContextMap.values()) {
             VMClusterContext vmClusterContext = (VMClusterContext) 
clusterContext;
@@ -695,13 +696,13 @@ abstract public class VMClusterMonitor extends 
AbstractClusterMonitor {
         return nwPartitionIdToNwPartitionMap;
     }
 
-    public NetworkPartitionContext getNetworkPartitionCtxt(String instanceId, 
String id) {
+    public ClusterLevelNetworkPartitionContext getNetworkPartitionCtxt(String 
instanceId, String id) {
 
         VMClusterContext vmClusterContext = (VMClusterContext) 
instanceIdToClusterContextMap.get(instanceId);
         return vmClusterContext.getNetworkPartitionCtxt(id);
     }
 
-    protected NetworkPartitionContext getNetworkPartitionCtxt(String 
instanceId, Member member) {
+    protected ClusterLevelNetworkPartitionContext 
getNetworkPartitionCtxt(String instanceId, Member member) {
 
         VMClusterContext vmClusterContext = (VMClusterContext) 
instanceIdToClusterContextMap.get(instanceId);
         return vmClusterContext.getNetworkPartitionCtxt(member);

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
index d22d20c..dbf73e4 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
@@ -86,7 +86,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
 
                 @Override
                 public void run() {
-                    for (NetworkPartitionContext networkPartitionContext : 
getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
+                    for (ClusterLevelNetworkPartitionContext 
networkPartitionContext : 
getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
 
                         // minimum check per partition
                         for (ClusterLevelPartitionContext partitionContext : 
networkPartitionContext.getPartitionCtxts()

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
index 37b7eda..5e2cc25 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
@@ -116,7 +116,7 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
             Runnable monitoringRunnable = new Runnable() {
                 @Override
                 public void run() {
-                    for (NetworkPartitionContext networkPartitionContext :
+                    for (ClusterLevelNetworkPartitionContext 
networkPartitionContext :
                             
getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
                         // store primary members in the network partition 
context
                         List<String> primaryMemberListInNetworkPartition = new 
ArrayList<String>();
@@ -285,13 +285,13 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
         this.scalingFactorBasedOnDependencies = scalingEvent.getFactor();
         VMClusterContext vmClusterContext = (VMClusterContext) 
instanceIdToClusterContextMap.get(scalingEvent.getInstanceId());
 
-        NetworkPartitionContext networkPartitionContext = 
getNetworkPartitionCtxt(null, scalingEvent.getNetworkPartitionId());
+        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, 
scalingEvent.getNetworkPartitionId());
 
 
-        float requiredInstanceCount = 
networkPartitionContext.getMinInstanceCount() * 
scalingFactorBasedOnDependencies;
+        float requiredInstanceCount = 
clusterLevelNetworkPartitionContext.getMinInstanceCount() * 
scalingFactorBasedOnDependencies;
         int roundedRequiredInstanceCount = 
getRoundedInstanceCount(requiredInstanceCount,
                 
vmClusterContext.getAutoscalePolicy().getInstanceRoundingFactor());
-        
networkPartitionContext.setRequiredInstanceCountBasedOnDependencies(roundedRequiredInstanceCount);
+        
clusterLevelNetworkPartitionContext.setRequiredInstanceCountBasedOnDependencies(roundedRequiredInstanceCount);
 
         getDependentScaleCheckKnowledgeSession().setGlobal("clusterId", 
getClusterId());
         getDependentScaleCheckKnowledgeSession().setGlobal("scalingFactor", 
scalingFactorBasedOnDependencies);
@@ -299,7 +299,7 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
                 
vmClusterContext.getAutoscalePolicy().getInstanceRoundingFactor());
 
         dependentScaleCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateScaleCheck(getScaleCheckKnowledgeSession()
-                , scaleCheckFactHandle, networkPartitionContext);
+                , scaleCheckFactHandle, clusterLevelNetworkPartitionContext);
 
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
index 8fde5dd..3a2498f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
@@ -21,6 +21,8 @@ package org.apache.stratos.autoscaler.monitor.group;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
+import 
org.apache.stratos.autoscaler.ParentComponentLevelNetworkPartitionContext;
+import org.apache.stratos.autoscaler.algorithm.AutoscaleAlgorithm;
 import org.apache.stratos.autoscaler.applications.ApplicationHolder;
 import 
org.apache.stratos.autoscaler.applications.dependency.context.ApplicationChildContext;
 import 
org.apache.stratos.autoscaler.applications.dependency.context.GroupChildContext;
@@ -33,6 +35,10 @@ import 
org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor;
 import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor;
 import org.apache.stratos.autoscaler.monitor.events.*;
+import org.apache.stratos.autoscaler.partition.PartitionGroup;
+import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
+import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
 import org.apache.stratos.messaging.domain.applications.*;
 import 
org.apache.stratos.messaging.domain.instance.context.GroupInstanceContext;
 import org.apache.stratos.messaging.domain.instance.context.InstanceContext;
@@ -63,7 +69,7 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
         super(group);
         this.appId = appId;
         //starting the minimum start able dependencies
-        startMinimumDependencies(group, parentInstanceId);
+        //startMinimumDependencies(group, parentInstanceId);
     }
 
     /**
@@ -225,7 +231,7 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
         this.groupScalingEnabled = groupScalingEnabled;
     }
 
-    private void startMinimumDependencies(Group group, List<String> 
parentInstanceIds)
+    public void startMinimumDependencies(Group group, List<String> 
parentInstanceIds)
             throws TopologyInConsistentException {
         int min = group.getGroupMinInstances();
         if(group.getInstanceContextCount() >= min) {
@@ -257,11 +263,36 @@ public class GroupMonitor extends ParentComponentMonitor 
implements EventHandler
     private void createInstanceAndStartDependency(Group group, List<String> 
parentInstanceIds)
             throws TopologyInConsistentException {
         List<String> instanceIds = new ArrayList<String>();
+        String deploymentPolicyName = group.getDeploymentPolicy();
+
         String instanceId;
         for(String parentInstanceId : parentInstanceIds) {
+            InstanceContext parentInstanceContext = 
this.parent.getInstanceContext(parentInstanceId);
+            ParentComponentLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext;
+            if(this.networkPartitionCtxts.containsKey(parentInstanceContext)) {
+                clusterLevelNetworkPartitionContext = 
this.networkPartitionCtxts.
+                                            
get(parentInstanceContext.getNetworkPartitionId());
+            } else {
+                clusterLevelNetworkPartitionContext = new 
ParentComponentLevelNetworkPartitionContext(
+                                                        
parentInstanceContext.getNetworkPartitionId(),
+                                                        null, null);
+                
this.addNetworkPartitionContext(clusterLevelNetworkPartitionContext);
+            }
+
+            if(deploymentPolicyName != null) {
+                DeploymentPolicy deploymentPolicy = PolicyManager.getInstance()
+                        .getDeploymentPolicy(deploymentPolicyName);
+                PartitionGroup partitionGroup = deploymentPolicy.
+                        
getPartitionGroup(parentInstanceContext.getNetworkPartitionId());
+
+                AutoscaleAlgorithm algorithm = 
this.getAutoscaleAlgorithm(partitionGroup.getPartitionAlgo());
+                Partition partition = 
algorithm.getNextScaleUpPartition(clusterLevelNetworkPartitionContext, this.id);
+            }
             instanceId = createGroupInstance(group, parentInstanceId);
             instanceIds.add(instanceId);
 
+
+
         }
         startDependency(group, instanceIds);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 8a21257..d3e2474 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -445,12 +445,12 @@ public class RuleTasksDelegator {
         return (int) Math.ceil(predictedValue);
     }
 
-    public double getLoadAveragePredictedValue(NetworkPartitionContext 
networkPartitionContext) {
+    public double 
getLoadAveragePredictedValue(ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext) {
         double loadAveragePredicted = 0.0d;
         int totalMemberCount = 0;
 
-        for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
-            for (MemberStatsContext memberStatsContext : 
clusterMonitorPartitionContext.getMemberStatsContexts().values()) {
+        for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+            for (MemberStatsContext memberStatsContext : 
partitionContext.getMemberStatsContexts().values()) {
 
                 float memberAverageLoadAverage = 
memberStatsContext.getLoadAverage().getAverage();
                 float memberGredientLoadAverage = 
memberStatsContext.getLoadAverage().getGradient();
@@ -473,12 +473,12 @@ public class RuleTasksDelegator {
         }
     }
 
-    public double getMemoryConsumptionPredictedValue(NetworkPartitionContext 
networkPartitionContext) {
+    public double 
getMemoryConsumptionPredictedValue(ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext) {
         double memoryConsumptionPredicted = 0.0d;
         int totalMemberCount = 0;
 
-        for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
-            for (MemberStatsContext memberStatsContext : 
clusterMonitorPartitionContext.getMemberStatsContexts().values()) {
+        for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+            for (MemberStatsContext memberStatsContext : 
partitionContext.getMemberStatsContexts().values()) {
 
                 float memberMemoryConsumptionAverage = 
memberStatsContext.getMemoryConsumption().getAverage();
                 float memberMemoryConsumptionGredient = 
memberStatsContext.getMemoryConsumption().getGradient();

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
index d4d0a2e..bd0109c 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
@@ -22,7 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
 import org.apache.stratos.autoscaler.ClusterLevelPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
+import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.applications.ApplicationHolder;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
@@ -172,9 +172,9 @@ public class StatusChecker {
      */
     private boolean clusterActive(VMClusterMonitor monitor) {
         boolean clusterActive = false;
-        for (NetworkPartitionContext networkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
+            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (clusterMonitorPartitionContext.getMinimumMemberCount() == 
clusterMonitorPartitionContext.getActiveMemberCount()) {
                     clusterActive = true;
                 } else if 
(clusterMonitorPartitionContext.getActiveMemberCount() > 
clusterMonitorPartitionContext.getMinimumMemberCount()) {
@@ -196,10 +196,10 @@ public class StatusChecker {
      */
     private boolean clusterMonitorHasMembers(VMClusterMonitor monitor) {
         boolean hasMember = false;
-        for (NetworkPartitionContext networkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
-                if 
(clusterMonitorPartitionContext.getNonTerminatedMemberCount() > 0) {
+            for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+                if (partitionContext.getNonTerminatedMemberCount() > 0) {
                     hasMember = true;
                 } else {
                     hasMember = false;
@@ -261,8 +261,8 @@ public class StatusChecker {
      */
     private boolean getClusterInactive(VMClusterMonitor monitor, String 
partitionId) {
         boolean clusterInActive = false;
-        for (NetworkPartitionContext networkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
-            for (ClusterLevelPartitionContext partition : 
networkPartitionContext.getPartitionCtxts().values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
+            for (ClusterLevelPartitionContext partition : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (partitionId.equals(partition.getPartitionId()) &&
                         partition.getActiveMemberCount() <= 
partition.getMinimumMemberCount()) {
                     clusterInActive = true;

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
index 4d4cb03..cce28cc 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
@@ -22,7 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
 import org.apache.stratos.autoscaler.ClusterLevelPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
+import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
 import org.apache.stratos.autoscaler.status.processor.StatusProcessor;
@@ -65,9 +65,9 @@ public class ClusterStatusActiveProcessor extends 
ClusterStatusProcessor {
         VMClusterMonitor monitor = (VMClusterMonitor) 
AutoscalerContext.getInstance().
                                     getClusterMonitor(clusterId);
         boolean clusterActive = false;
-        for (NetworkPartitionContext networkPartitionContext : 
monitor.getNetworkPartitionCtxts(instanceId).values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getNetworkPartitionCtxts(instanceId).values()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
+            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (clusterMonitorPartitionContext.getMinimumMemberCount() == 
clusterMonitorPartitionContext.getActiveMemberCount()) {
                     clusterActive = true;
                 } else if 
(clusterMonitorPartitionContext.getActiveMemberCount() > 
clusterMonitorPartitionContext.getMinimumMemberCount()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
index 6728371..10f9707 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
@@ -22,7 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
 import org.apache.stratos.autoscaler.ClusterLevelPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
+import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
 import org.apache.stratos.autoscaler.status.processor.StatusProcessor;
@@ -91,8 +91,8 @@ public class ClusterStatusInActiveProcessor extends 
ClusterStatusProcessor {
 
     private boolean getClusterInactive(VMClusterMonitor monitor) {
         boolean clusterInActive = false;
-        for (NetworkPartitionContext networkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
-            for (ClusterLevelPartitionContext partition : 
networkPartitionContext.getPartitionCtxts().values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
+            for (ClusterLevelPartitionContext partition : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (partition.getActiveMemberCount() <= 
partition.getMinimumMemberCount()) {
                     clusterInActive = true;
                     return clusterInActive;

http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
index 7da0012..f3b6dd1 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
@@ -22,7 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
 import org.apache.stratos.autoscaler.ClusterLevelPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
+import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.applications.ApplicationHolder;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
@@ -120,10 +120,10 @@ public class ClusterStatusTerminatedProcessor extends 
ClusterStatusProcessor {
      */
     private boolean clusterMonitorHasMembers(VMClusterMonitor monitor) {
         boolean hasMember = false;
-        for (NetworkPartitionContext networkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
-                if 
(clusterMonitorPartitionContext.getNonTerminatedMemberCount() > 0) {
+            for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+                if (partitionContext.getNonTerminatedMemberCount() > 0) {
                     hasMember = true;
                 } else {
                     hasMember = false;

Reply via email to