http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 25836b7..83d5374 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
@@ -21,14 +21,14 @@ package org.apache.stratos.autoscaler.monitor.cluster;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.context.cluster.AbstractClusterContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
-import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
+import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
-import 
org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
+import 
org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.autoscaler.util.ConfUtil;
@@ -40,9 +40,8 @@ import 
org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
 /**
  * Is responsible for monitoring a service cluster which is based on VMs. This 
runs periodically
@@ -58,9 +57,9 @@ public class VMServiceClusterMonitor extends VMClusterMonitor 
{
 
     public VMServiceClusterMonitor(String serviceType, String clusterId) {
         super(serviceType, clusterId, new AutoscalerRuleEvaluator(
-                        StratosConstants.VM_MIN_CHECK_DROOL_FILE,
-                        StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE,
-                        StratosConstants.VM_SCALE_CHECK_DROOL_FILE));
+                StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+                StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE,
+                StratosConstants.VM_SCALE_CHECK_DROOL_FILE));
         readConfigurations();
     }
 
@@ -71,10 +70,10 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
                 /* TODO ***********if  (((getStatus().getCode() <= 
ClusterStatus.Active.getCode()) ||
                         (getStatus() == ClusterStatus.Inactive && 
!hasStartupDependents)) && !this.hasFaultyMember
                         && !stop) {*/
-                    if (log.isDebugEnabled()) {
-                        log.debug("Cluster monitor is running.. " + 
this.toString());
-                    }
-                    monitor();
+                if (log.isDebugEnabled()) {
+                    log.debug("Cluster monitor is running.. " + 
this.toString());
+                }
+                monitor();
                 /*} else {
                     if (log.isDebugEnabled()) {
                         log.debug("Cluster monitor is suspended as the cluster 
is in " +
@@ -113,98 +112,107 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
     }
 
     public void monitor() {
-
-        Set<Map.Entry<String, AbstractClusterContext>> 
instanceIdToClusterCtxtEntries = instanceIdToClusterContextMap.entrySet();
-        for (final Map.Entry<String, AbstractClusterContext> 
instanceIdToClusterCtxtEntry : instanceIdToClusterCtxtEntries) {
-            Runnable monitoringRunnable = new Runnable() {
-                @Override
-                public void run() {
-                    for (ClusterLevelNetworkPartitionContext 
networkPartitionContext :
-                            
getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
-                        // store primary members in the network partition 
context
-                        List<String> primaryMemberListInNetworkPartition = new 
ArrayList<String>();
-                        //minimum check per partition
-                        for (ClusterLevelPartitionContext partitionContext : 
networkPartitionContext.getPartitionCtxts().values()) {
-                            // store primary members in the partition context
-                            List<String> primaryMemberListInPartition = new 
ArrayList<String>();
-                            // get active primary members in this partition 
context
-                            for (MemberContext memberContext : 
partitionContext.getActiveMembers()) {
-                                if (isPrimaryMember(memberContext)) {
-                                    
primaryMemberListInPartition.add(memberContext.getMemberId());
+        final Collection<ClusterLevelNetworkPartitionContext> 
clusterLevelNetworkPartitionContexts =
+                ((VMClusterContext) 
this.clusterContext).getNetworkPartitionCtxts().values();
+        Runnable monitoringRunnable = new Runnable() {
+            @Override
+            public void run() {
+                for (ClusterLevelNetworkPartitionContext 
networkPartitionContext :
+                        clusterLevelNetworkPartitionContexts) {
+                    // store primary members in the network partition context
+                    List<String> primaryMemberListInNetworkPartition = new 
ArrayList<String>();
+                    //minimum check per partition
+                    for (ClusterInstanceContext instanceContext : 
networkPartitionContext.
+                            getClusterInstanceContextMap().values()) {
+                        //FIXME to check the status of the instance
+                        if (true) {
+                            for (ClusterLevelPartitionContext partitionContext 
:
+                                    
instanceContext.getPartitionCtxts().values()) {
+                                // store primary members in the partition 
context
+                                List<String> primaryMemberListInPartition = 
new ArrayList<String>();
+                                // get active primary members in this 
partition context
+                                for (MemberContext memberContext : 
partitionContext.getActiveMembers()) {
+                                    if (isPrimaryMember(memberContext)) {
+                                        
primaryMemberListInPartition.add(memberContext.getMemberId());
+                                    }
                                 }
-                            }
 
-                            // get pending primary members in this partition 
context
-                            for (MemberContext memberContext : 
partitionContext.getPendingMembers()) {
-                                if (isPrimaryMember(memberContext)) {
-                                    
primaryMemberListInPartition.add(memberContext.getMemberId());
+                                // get pending primary members in this 
partition context
+                                for (MemberContext memberContext : 
partitionContext.getPendingMembers()) {
+                                    if (isPrimaryMember(memberContext)) {
+                                        
primaryMemberListInPartition.add(memberContext.getMemberId());
+                                    }
+                                }
+                                
primaryMemberListInNetworkPartition.addAll(primaryMemberListInPartition);
+                                
getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+                                
getMinCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
+                                
getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
+                                
getMinCheckKnowledgeSession().setGlobal("instanceId",
+                                        instanceContext.getId());
+
+                                if (log.isDebugEnabled()) {
+                                    log.debug(String.format("Running minimum 
check for partition %s ",
+                                            
partitionContext.getPartitionId()));
                                 }
-                            }
-                            
primaryMemberListInNetworkPartition.addAll(primaryMemberListInPartition);
-                            
getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
-                            getMinCheckKnowledgeSession().setGlobal("lbRef", 
lbReferenceType);
-                            
getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
-                            
getMinCheckKnowledgeSession().setGlobal("instanceId", 
instanceIdToClusterCtxtEntry.getKey());
-
-                            if (log.isDebugEnabled()) {
-                                log.debug(String.format("Running minimum check 
for partition %s ", partitionContext.getPartitionId()));
-                            }
-
-                            minCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession()
-                                    , minCheckFactHandle, partitionContext);
-
-                            obsoleteCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
-                                    obsoleteCheckFactHandle, partitionContext);
-
-                            //checking the status of the cluster
-
-
-                        }
-                        boolean rifReset = 
networkPartitionContext.isRifReset();
-                        boolean memoryConsumptionReset = 
networkPartitionContext.isMemoryConsumptionReset();
-                        boolean loadAverageReset = 
networkPartitionContext.isLoadAverageReset();
 
-                        if (log.isDebugEnabled()) {
-                            log.debug("flag of rifReset: " + rifReset + " flag 
of memoryConsumptionReset" + memoryConsumptionReset
-                                    + " flag of loadAverageReset" + 
loadAverageReset);
-                        }
-                        if (rifReset || memoryConsumptionReset || 
loadAverageReset) {
+                                minCheckFactHandle = AutoscalerRuleEvaluator.
+                                        
evaluateMinCheck(getMinCheckKnowledgeSession()
+                                                , minCheckFactHandle, 
partitionContext);
 
+                                obsoleteCheckFactHandle = 
AutoscalerRuleEvaluator.
+                                        
evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
+                                                obsoleteCheckFactHandle, 
partitionContext);
 
-                            VMClusterContext vmClusterContext = 
(VMClusterContext) instanceIdToClusterCtxtEntry.getValue();
+                                //checking the status of the cluster
 
-                            
getScaleCheckKnowledgeSession().setGlobal("instanceId", 
instanceIdToClusterCtxtEntry.getKey());
-                            
getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
-                            
getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", 
vmClusterContext.getAutoscalePolicy());
-                            
getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
-                            
getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
-                            
getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
-                            getScaleCheckKnowledgeSession().setGlobal("lbRef", 
lbReferenceType);
-                            
getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
-                            
getScaleCheckKnowledgeSession().setGlobal("primaryMembers", 
primaryMemberListInNetworkPartition);
+                                boolean rifReset = 
instanceContext.isRifReset();
+                                boolean memoryConsumptionReset = 
instanceContext.isMemoryConsumptionReset();
+                                boolean loadAverageReset = 
instanceContext.isLoadAverageReset();
 
-                            if (log.isDebugEnabled()) {
-                                log.debug(String.format("Running scale check 
for network partition %s ", networkPartitionContext.getId()));
-                                log.debug(" Primary members : " + 
primaryMemberListInNetworkPartition);
+                                if (log.isDebugEnabled()) {
+                                    log.debug("flag of rifReset: " + rifReset 
+ " flag of memoryConsumptionReset" + memoryConsumptionReset
+                                            + " flag of loadAverageReset" + 
loadAverageReset);
+                                }
+                                if (rifReset || memoryConsumptionReset || 
loadAverageReset) {
+
+
+                                    VMClusterContext vmClusterContext = 
(VMClusterContext) clusterContext;
+
+                                    
getScaleCheckKnowledgeSession().setGlobal("instanceId",
+                                            instanceContext.getId());
+                                    
getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+                                    
getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", 
vmClusterContext.getAutoscalePolicy());
+                                    
getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
+                                    
getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
+                                    
getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
+                                    
getScaleCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
+                                    
getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
+                                    
getScaleCheckKnowledgeSession().setGlobal("primaryMembers", 
primaryMemberListInNetworkPartition);
+
+                                    if (log.isDebugEnabled()) {
+                                        log.debug(String.format("Running scale 
check for network partition %s ", networkPartitionContext.getId()));
+                                        log.debug(" Primary members : " + 
primaryMemberListInNetworkPartition);
+                                    }
+
+                                    scaleCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateScaleCheck(getScaleCheckKnowledgeSession()
+                                            , scaleCheckFactHandle, 
networkPartitionContext);
+
+                                    instanceContext.setRifReset(false);
+                                    
instanceContext.setMemoryConsumptionReset(false);
+                                    instanceContext.setLoadAverageReset(false);
+                                } else if (log.isDebugEnabled()) {
+                                    log.debug(String.format("Scale rule will 
not run since the LB statistics have not received before this " +
+                                            "cycle for network partition %s", 
networkPartitionContext.getId()));
+                                }
                             }
 
-                            scaleCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateScaleCheck(getScaleCheckKnowledgeSession()
-                                    , scaleCheckFactHandle, 
networkPartitionContext);
-
-                            networkPartitionContext.setRifReset(false);
-                            
networkPartitionContext.setMemoryConsumptionReset(false);
-                            networkPartitionContext.setLoadAverageReset(false);
-                        } else if (log.isDebugEnabled()) {
-                            log.debug(String.format("Scale rule will not run 
since the LB statistics have not received before this " +
-                                    "cycle for network partition %s", 
networkPartitionContext.getId()));
                         }
-
                     }
                 }
-            };
 
-            monitoringRunnable.run();
-        }
+            }
+        };
+        monitoringRunnable.run();
     }
 
     @Override
@@ -279,16 +287,18 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
     @Override
     public void onParentScalingEvent(MonitorScalingEvent scalingEvent) {
 
-        if(log.isDebugEnabled()){
+        if (log.isDebugEnabled()) {
             log.debug("Parent scaling event received to [cluster]: " + 
this.getClusterId()
-                    + ", [network partition]: "  + 
scalingEvent.getNetworkPartitionId()
+                    + ", [network partition]: " + 
scalingEvent.getNetworkPartitionId()
                     + ", [event] " + scalingEvent.getId() + ", [group 
instance] " + scalingEvent.getInstanceId());
         }
 
         this.scalingFactorBasedOnDependencies = scalingEvent.getFactor();
-        VMClusterContext vmClusterContext = (VMClusterContext) 
instanceIdToClusterContextMap.get(scalingEvent.getInstanceId());
+        VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
+        String instanceId = scalingEvent.getInstanceId();
 
-        ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, 
scalingEvent.getNetworkPartitionId());
+        ClusterInstanceContext clusterLevelNetworkPartitionContext =
+                
getClusterInstanceContext(scalingEvent.getNetworkPartitionId(), instanceId);
 
 
         //TODO get min instance count from instance context

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index 58a02a6..b332b15 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -200,53 +200,66 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
         List<String> instanceIds = new ArrayList<String>();
         DeploymentPolicy deploymentPolicy = getDeploymentPolicy(application);
         String instanceId;
-        for (ApplicationLevelNetworkPartition networkPartition : 
deploymentPolicy.getApplicationLevelNetworkPartitions()) {
-            if (networkPartition.isActiveByDefault()) {
-                ApplicationLevelNetworkPartitionContext context =
-                        new 
ApplicationLevelNetworkPartitionContext(networkPartition.getId());
-                instanceId = createApplicationInstance(application, 
networkPartition.getId());
-                
context.addInstanceContext(application.getInstanceContexts(instanceId));
-
-                this.networkPartitionCtxts.put(context.getId(), context);
-
-                instanceIds.add(instanceId);
-                log.info("Application instance has been added for the [network 
partition] " +
-                        networkPartition.getId() + " [appInstanceId] " + 
instanceId);
-            }
 
-        }
-        startDependency(application, instanceIds);
+        if(deploymentPolicy == null) {
+            //FIXME for docker with deployment policy
+            instanceId = createApplicationInstance(application, null);
+            instanceIds.add(instanceId);
+        } else {
+            for (ApplicationLevelNetworkPartition networkPartition :
+                                        
deploymentPolicy.getApplicationLevelNetworkPartitions()) {
+                if (networkPartition.isActiveByDefault()) {
+                    ApplicationLevelNetworkPartitionContext context =
+                            new 
ApplicationLevelNetworkPartitionContext(networkPartition.getId());
+                    instanceId = createApplicationInstance(application, 
networkPartition.getId());
+                    
context.addInstanceContext(application.getInstanceContexts(instanceId));
+
+                    this.networkPartitionCtxts.put(context.getId(), context);
 
+                    instanceIds.add(instanceId);
+                    log.info("Application instance has been added for the 
[network partition] " +
+                            networkPartition.getId() + " [appInstanceId] " + 
instanceId);
+                }
 
+            }
+        }
+        startDependency(application, instanceIds);
     }
 
     public void createInstanceOnBurstingForApplication() throws 
TopologyInConsistentException,
             PolicyValidationException,
             ParentMonitorNotFoundException {
-        //TODO get lock
         Application application = 
ApplicationHolder.getApplications().getApplication(appId);
         if (application == null) {
             String msg = "Application cannot be found in the Topology.";
             throw new TopologyInConsistentException(msg);
         }
+        boolean burstNPFound = false;
         DeploymentPolicy deploymentPolicy = getDeploymentPolicy(application);
         String instanceId = null;
         //Find out the inActive network partition
-        boolean burstNPFound = false;
-        for (ApplicationLevelNetworkPartition networkPartition : 
deploymentPolicy.getApplicationLevelNetworkPartitions()) {
-            if (!networkPartition.isActiveByDefault()) {
-                if 
(!this.networkPartitionCtxts.containsKey(networkPartition.getId())) {
-                    ApplicationLevelNetworkPartitionContext context =
-                            new 
ApplicationLevelNetworkPartitionContext(networkPartition.getId());
-                    context.setCreatedOnBurst(true);
-                    instanceId = createApplicationInstance(application, 
networkPartition.getId());
-                    
context.addInstanceContext(application.getInstanceContexts(instanceId));
-                    this.networkPartitionCtxts.put(context.getId(), context);
-                    burstNPFound = true;
+        if(deploymentPolicy == null) {
+            //FIXME for docker with deployment policy
+            instanceId = createApplicationInstance(application, null);
+
+        } else {
+            for (ApplicationLevelNetworkPartition networkPartition : 
deploymentPolicy.
+                                                            
getApplicationLevelNetworkPartitions()) {
+                if (!networkPartition.isActiveByDefault()) {
+                    if 
(!this.networkPartitionCtxts.containsKey(networkPartition.getId())) {
+                        ApplicationLevelNetworkPartitionContext context =
+                                new 
ApplicationLevelNetworkPartitionContext(networkPartition.getId());
+                        context.setCreatedOnBurst(true);
+                        instanceId = createApplicationInstance(application, 
networkPartition.getId());
+                        
context.addInstanceContext(application.getInstanceContexts(instanceId));
+                        this.networkPartitionCtxts.put(context.getId(), 
context);
+                        burstNPFound = true;
+                    }
                 }
             }
         }
 
+
         if (!burstNPFound) {
             log.warn("[Application] " + appId + " cannot be burst as no 
available resources found");
         } else {
@@ -257,22 +270,21 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
 
     private DeploymentPolicy getDeploymentPolicy(Application application) 
throws PolicyValidationException {
         String deploymentPolicyName = application.getDeploymentPolicy();
-        if (deploymentPolicyName == null) {
+        /*if (deploymentPolicyName == null) {
             String msg = "Deployment Policy is not specified to the 
[Application]:" + appId;
             log.error(msg);
             throw new PolicyValidationException(msg);
         }
-
-        DeploymentPolicy deploymentPolicy =
-                PolicyManager.getInstance()
-                        .getDeploymentPolicy(deploymentPolicyName);
-        if (deploymentPolicy == null) {
+*/      DeploymentPolicy deploymentPolicy = null;
+        if(deploymentPolicyName != null) {
+            deploymentPolicy = PolicyManager.getInstance()
+                    .getDeploymentPolicy(deploymentPolicyName);
             if (deploymentPolicy == null) {
                 String msg = "Deployment policy is null: [policy-name] " + 
deploymentPolicyName;
                 log.error(msg);
                 throw new PolicyValidationException(msg);
             }
-        }
+            }
 
         return deploymentPolicy;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
index ee6c877..3e7d6e6 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
@@ -85,4 +85,13 @@ public class ApplicationLevelNetworkPartition implements 
Serializable{
     public void setActiveByDefault(boolean activeByDefault) {
         this.activeByDefault = activeByDefault;
     }
+
+    public Partition getPartition(String partitionId) {
+        for(Partition partition : partitions) {
+            if(partition.getId().equals(partitionId)) {
+                return partition;
+            }
+        }
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
index a8d6707..83af824 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
@@ -92,4 +92,5 @@ public class ChildLevelNetworkPartition implements 
Serializable {
     public void setChildLevelPartitions(ChildLevelPartition[] 
childLevelPartitions) {
         this.childLevelPartitions = childLevelPartitions;
     }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 50c59b8..330036a 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
@@ -28,7 +28,9 @@ import 
org.apache.stratos.autoscaler.algorithm.OneAfterAnother;
 import org.apache.stratos.autoscaler.algorithm.RoundRobin;
 import org.apache.stratos.autoscaler.client.CloudControllerClient;
 import org.apache.stratos.autoscaler.client.InstanceNotificationClient;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import org.apache.stratos.autoscaler.context.cluster.KubernetesClusterContext;
+import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
 import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
@@ -185,11 +187,10 @@ public class RuleTasksDelegator {
             //Calculate accumulation of minimum counts of all the partition of 
current network partition
             int minimumCountOfNetworkPartition = 0;
             VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) 
AutoscalerContext.getInstance().getClusterMonitor(clusterId);
-            for (ClusterLevelPartitionContext 
partitionContextOfCurrentNetworkClusterMonitorPartition : 
vmClusterMonitor.getNetworkPartitionCtxt(instanceId, nwPartitionId).
-                    getPartitionCtxts().values()) {
-
-                minimumCountOfNetworkPartition += 
partitionContextOfCurrentNetworkClusterMonitorPartition.getMinimumMemberCount();
-            }
+            VMClusterContext clusterContext = (VMClusterContext) 
vmClusterMonitor.getClusterContext();
+            ClusterLevelNetworkPartitionContext  
clusterLevelNetworkPartitionContext = 
clusterContext.getNetworkPartitionCtxt(nwPartitionId);
+            ClusterInstanceContext clusterInstanceContext = 
clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+            minimumCountOfNetworkPartition = 
clusterInstanceContext.getMinInstanceCount();
             MemberContext memberContext =
                     CloudControllerClient.getInstance()
                             
.spawnAnInstance(clusterMonitorPartitionContext.getPartition(),
@@ -477,11 +478,11 @@ public class RuleTasksDelegator {
         return (int) Math.ceil(predictedValue);
     }
 
-    public double 
getLoadAveragePredictedValue(ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext) {
+    public double getLoadAveragePredictedValue(String instanceId, 
ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) {
         double loadAveragePredicted = 0.0d;
         int totalMemberCount = 0;
-
-        for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+        ClusterInstanceContext clusterInstanceContext = 
clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+        for (ClusterLevelPartitionContext partitionContext : 
clusterInstanceContext.getPartitionCtxts().values()) {
             for (MemberStatsContext memberStatsContext : 
partitionContext.getMemberStatsContexts().values()) {
 
                 float memberAverageLoadAverage = 
memberStatsContext.getLoadAverage().getAverage();
@@ -505,11 +506,11 @@ public class RuleTasksDelegator {
         }
     }
 
-    public double 
getMemoryConsumptionPredictedValue(ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext) {
+    public double getMemoryConsumptionPredictedValue(String instanceId, 
ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) {
         double memoryConsumptionPredicted = 0.0d;
         int totalMemberCount = 0;
-
-        for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+        ClusterInstanceContext clusterInstanceContext = 
clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+        for (ClusterLevelPartitionContext partitionContext : 
clusterInstanceContext.getPartitionCtxts().values()) {
             for (MemberStatsContext memberStatsContext : 
partitionContext.getMemberStatsContexts().values()) {
 
                 float memberMemoryConsumptionAverage = 
memberStatsContext.getMemoryConsumption().getAverage();

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 1645cad..daff8ba 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
@@ -172,7 +172,7 @@ public class StatusChecker {
      */
     private boolean clusterActive(VMClusterMonitor monitor) {
         boolean clusterActive = false;
-        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
+        /*for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
             //minimum check per partition
             for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (clusterMonitorPartitionContext.getMinimumMemberCount() == 
clusterMonitorPartitionContext.getActiveMemberCount()) {
@@ -184,7 +184,7 @@ public class StatusChecker {
                     return false;
                 }
             }
-        }
+        }*/
         return clusterActive;
     }
 
@@ -198,13 +198,13 @@ public class StatusChecker {
         boolean hasMember = false;
         for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+            /*for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (partitionContext.getNonTerminatedMemberCount() > 0) {
                     hasMember = true;
                 } else {
                     hasMember = false;
                 }
-            }
+            }*/
         }
         return hasMember;
     }
@@ -262,13 +262,13 @@ public class StatusChecker {
     private boolean getClusterInactive(VMClusterMonitor monitor, String 
partitionId) {
         boolean clusterInActive = false;
         for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
-            for (ClusterLevelPartitionContext partition : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+            /*for (ClusterLevelPartitionContext partition : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
                 if (partitionId.equals(partition.getPartitionId()) &&
                         partition.getActiveMemberCount() <= 
partition.getMinimumMemberCount()) {
                     clusterInActive = true;
                     return clusterInActive;
                 }
-            }
+            }*/
 
         }
         return clusterInActive;

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 4b745f2..d6dc59e 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
@@ -21,6 +21,8 @@ package 
org.apache.stratos.autoscaler.status.processor.cluster;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
+import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
@@ -65,9 +67,10 @@ public class ClusterStatusActiveProcessor extends 
ClusterStatusProcessor {
         VMClusterMonitor monitor = (VMClusterMonitor) 
AutoscalerContext.getInstance().
                                     getClusterMonitor(clusterId);
         boolean clusterActive = false;
-        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getNetworkPartitionCtxts(instanceId).values()) {
+        for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : monitor.getNetworkPartitionCtxts()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+            ClusterInstanceContext instanceContext = 
clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+            for (ClusterLevelPartitionContext clusterMonitorPartitionContext : 
instanceContext.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/4f2c1b70/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 b536371..01daa54 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
@@ -21,6 +21,7 @@ package 
org.apache.stratos.autoscaler.status.processor.cluster;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
@@ -65,7 +66,7 @@ public class ClusterStatusInActiveProcessor extends 
ClusterStatusProcessor {
                 getClusterMonitor(clusterId);
 
         boolean clusterInActive;
-        clusterInActive = getClusterInactive(monitor);
+        clusterInActive = getClusterInactive(instanceId, monitor);
         if(clusterInActive) {
             //if the monitor is dependent, temporarily pausing it
             if (monitor.hasStartupDependents()) {
@@ -89,10 +90,11 @@ public class ClusterStatusInActiveProcessor extends 
ClusterStatusProcessor {
         return clusterInActive;
     }
 
-    private boolean getClusterInactive(VMClusterMonitor monitor) {
+    private boolean getClusterInactive(String instanceId, VMClusterMonitor 
monitor) {
         boolean clusterInActive = false;
         for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
-            for (ClusterLevelPartitionContext partition : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+            ClusterInstanceContext instanceContext = 
clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+            for (ClusterLevelPartitionContext partition : 
instanceContext.getPartitionCtxts().values()) {
                 if (partition.getActiveMemberCount() <= 
partition.getMinimumMemberCount()) {
                     clusterInActive = true;
                     return clusterInActive;

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 706ad9d..ec3528f 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
@@ -21,6 +21,7 @@ package 
org.apache.stratos.autoscaler.status.processor.cluster;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.applications.ApplicationHolder;
@@ -122,13 +123,18 @@ public class ClusterStatusTerminatedProcessor extends 
ClusterStatusProcessor {
         boolean hasMember = false;
         for (ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext : 
monitor.getAllNetworkPartitionCtxts().values()) {
             //minimum check per partition
-            for (ClusterLevelPartitionContext partitionContext : 
clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
-                if (partitionContext.getNonTerminatedMemberCount() > 0) {
-                    hasMember = true;
-                } else {
-                    hasMember = false;
+            for(ClusterInstanceContext clusterInstanceContext :
+                    
clusterLevelNetworkPartitionContext.getClusterInstanceContextMap().values()) {
+                for (ClusterLevelPartitionContext partitionContext :
+                        clusterInstanceContext.getPartitionCtxts().values()) {
+                    if (partitionContext.getNonTerminatedMemberCount() > 0) {
+                        hasMember = true;
+                    } else {
+                        hasMember = false;
+                    }
                 }
             }
+
         }
         return hasMember;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
index 6989238..d095c37 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
@@ -35,6 +35,9 @@ public class ClusterDataHolder implements Serializable {
     // Cluster id
     private String clusterId;
 
+    private int minInstances;
+    private int maxInstances;
+
     public ClusterDataHolder (String serviceType, String clusterId) {
 
         this.serviceType = serviceType;
@@ -48,4 +51,20 @@ public class ClusterDataHolder implements Serializable {
     public String getClusterId() {
         return clusterId;
     }
+
+    public int getMinInstances() {
+        return minInstances;
+    }
+
+    public void setMinInstances(int minInstances) {
+        this.minInstances = minInstances;
+    }
+
+    public int getMaxInstances() {
+        return maxInstances;
+    }
+
+    public void setMaxInstances(int maxInstances) {
+        this.maxInstances = maxInstances;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 1a6aaf6..bd737c2 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
@@ -55,10 +55,12 @@ public class Cluster implements Serializable {
 
     private String appId;
 
+    private String parentId;
+
     private String loadBalanceAlgorithmName;
     @XmlJavaTypeAdapter(MapAdapter.class)
     private Properties properties;
-    protected Map<String, ClusterInstance> instanceIdToInstanceContextMap;
+    private Map<String, ClusterInstance> instanceIdToInstanceContextMap;
     //private LifeCycleStateManager<ClusterStatus> clusterStateManager;
 
     public Cluster(String serviceName, String clusterId, String 
deploymentPolicyName,
@@ -70,7 +72,7 @@ public class Cluster implements Serializable {
         this.setHostNames(new ArrayList<String>());
         this.memberMap = new HashMap<String, Member>();
         this.appId = appId;
-        this.instanceIdToInstanceContextMap = new HashMap<String, 
ClusterInstance>();
+        this.setInstanceIdToInstanceContextMap(new HashMap<String, 
ClusterInstance>());
         //this.clusterStateManager = new 
LifeCycleStateManager<ClusterStatus>(ClusterStatus.Created, clusterId);
         // temporary; should be removed
         //this.status = ClusterStatus.Created;
@@ -213,44 +215,44 @@ public class Cluster implements Serializable {
     }
 
     public boolean isStateTransitionValid(ClusterStatus newState, String 
clusterInstanceId) {
-        return 
instanceIdToInstanceContextMap.get(clusterInstanceId).isStateTransitionValid(newState);
+        return 
getInstanceIdToInstanceContextMap().get(clusterInstanceId).isStateTransitionValid(newState);
     }
 
     public Stack<ClusterStatus> getTransitionedStates(String 
clusterInstanceId) {
-        return 
instanceIdToInstanceContextMap.get(clusterInstanceId).getTransitionedStates();
+        return 
getInstanceIdToInstanceContextMap().get(clusterInstanceId).getTransitionedStates();
     }
 
     public ClusterStatus getStatus(String applicationInstanceId) {
         //return status;
-        return 
instanceIdToInstanceContextMap.get(applicationInstanceId).getStatus();
+        return 
getInstanceIdToInstanceContextMap().get(applicationInstanceId).getStatus();
     }
 
     public boolean setStatus(ClusterStatus newStatus, String 
applicationInstanceId) {
-        return 
instanceIdToInstanceContextMap.get(applicationInstanceId).setStatus(newStatus);
+        return 
getInstanceIdToInstanceContextMap().get(applicationInstanceId).setStatus(newStatus);
     }
 
     public void addInstanceContext (String instanceId, ClusterInstance 
instanceContext) {
 
-        instanceIdToInstanceContextMap.put(instanceId, instanceContext);
+        getInstanceIdToInstanceContextMap().put(instanceId, instanceContext);
     }
 
     public ClusterInstance getInstanceContexts (String instanceId) {
         // if map is empty, return null
-        if (instanceIdToInstanceContextMap.isEmpty()) {
+        if (getInstanceIdToInstanceContextMap().isEmpty()) {
             return null;
         }
 
         // if instanceId is null, just get the first InstanceContext
         if (instanceId == null) {
-            return 
instanceIdToInstanceContextMap.entrySet().iterator().next().getValue();
+            return 
getInstanceIdToInstanceContextMap().entrySet().iterator().next().getValue();
         }
 
-        return instanceIdToInstanceContextMap.get(instanceId);
+        return getInstanceIdToInstanceContextMap().get(instanceId);
     }
 
     public int getInstanceContextCount () {
 
-        return instanceIdToInstanceContextMap.keySet().size();
+        return getInstanceIdToInstanceContextMap().keySet().size();
     }
 
     public boolean equals(Object other) {
@@ -278,6 +280,25 @@ public class Cluster implements Serializable {
         this.hostNames = hostNames;
     }
 
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public Map<String, ClusterInstance> getInstanceIdToInstanceContextMap() {
+        return instanceIdToInstanceContextMap;
+    }
+
+    public void setInstanceIdToInstanceContextMap(Map<String, ClusterInstance> 
instanceIdToInstanceContextMap) {
+        this.instanceIdToInstanceContextMap = instanceIdToInstanceContextMap;
+    }
+
+    public Collection<ClusterInstance> getClusterInstances() {
+        return this.instanceIdToInstanceContextMap.values();
+    }
 //    public ClusterStatus getTempStatus() {
 //        return status;
 //    }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
index 011c75a..47fbf7e 100755
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
@@ -8,12 +8,14 @@ public class AverageRequestsServingCapabilityEvent extends  
Event{
     private final String networkPartitionId;
     private final String clusterId;
     private final float value;
+    private final String instanceId;
 
-    public AverageRequestsServingCapabilityEvent(String networkPartitionId, 
String clusterId, float value) {
+    public AverageRequestsServingCapabilityEvent(String networkPartitionId, 
String clusterId, float value, String instanceId) {
         this.networkPartitionId = networkPartitionId;
         this.clusterId = clusterId;
         this.value = value;
 
+        this.instanceId = instanceId;
     }
     public String getClusterId() {
         return clusterId;
@@ -28,4 +30,7 @@ public class AverageRequestsServingCapabilityEvent extends  
Event{
     }
 
 
+    public String getInstanceId() {
+        return instanceId;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
index da358ff..e576ba8 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
@@ -29,15 +29,17 @@ public class MemberFaultEvent extends Event {
     private final String memberId;
     private final String partitionId;
     private final String instanceId;
+    private final String networkPartitionId;
 
     private final float value;
 
     public MemberFaultEvent(String clusterId, String memberId, String 
partitionId,
-                            String instanceId, float value) {
+                            String instanceId, String networkPartitionId, 
float value) {
         this.clusterId = clusterId;
         this.instanceId = instanceId;
         this.memberId = memberId;
         this.partitionId = partitionId;
+        this.networkPartitionId = networkPartitionId;
         this.value = value;
     }
 
@@ -61,4 +63,8 @@ public class MemberFaultEvent extends Event {
     public String getInstanceId() {
         return instanceId;
     }
+
+    public String getNetworkPartitionId() {
+        return networkPartitionId;
+    }
 }

Reply via email to