You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2014/11/03 10:52:25 UTC

[1/3] fixing AS issues due to merging

Repository: stratos
Updated Branches:
  refs/heads/docker-grouping-merge 71e8ac293 -> 21ed21233


http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
index f043f51..fa9736e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
@@ -22,17 +22,17 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
-import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.Monitor;
+import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
 import org.apache.stratos.messaging.event.health.stat.AverageLoadAverageEvent;
 import org.apache.stratos.messaging.event.health.stat.AverageMemoryConsumptionEvent;
 import org.apache.stratos.messaging.event.health.stat.AverageRequestsInFlightEvent;
@@ -62,10 +62,13 @@ import org.drools.runtime.rule.FactHandle;
  * Every cluster monitor, which are monitoring a cluster, should extend this class.
  */
 public abstract class AbstractClusterMonitor extends Monitor implements Runnable {
+	
+	private static final Log log = LogFactory.getLog(AbstractClusterMonitor.class);
 
     private String clusterId;
     private String serviceId;
-    protected ClusterStatus status;
+    private String appId;
+    private ClusterStatus status;
     private int monitoringIntervalMilliseconds;
 
     protected FactHandle minCheckFactHandle;
@@ -76,6 +79,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
 
     private AutoscalerRuleEvaluator autoscalerRuleEvaluator;
     protected boolean hasFaultyMember = false;
+    protected boolean stop = false;
 
     private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
 
@@ -88,6 +92,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
         this.autoscalerRuleEvaluator = autoscalerRuleEvaluator;
         this.scaleCheckKnowledgeSession = autoscalerRuleEvaluator.getScaleCheckStatefulSession();
         this.minCheckKnowledgeSession = autoscalerRuleEvaluator.getMinCheckStatefulSession();
+        this.status = ClusterStatus.Created;
     }
 
     protected abstract void readConfigurations();
@@ -178,14 +183,35 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
         this.clusterId = clusterId;
     }
 
-    public void setStatus(ClusterStatus status) {
-        this.status = status;
-    }
-
     public ClusterStatus getStatus() {
         return status;
     }
 
+    public void setStatus(ClusterStatus status) {
+
+        //if(this.status != status) {
+            this.status = status;
+            /**
+             * notifying the parent monitor about the state change
+             * If the cluster in_active and if it is a in_dependent cluster,
+             * then won't send the notification to parent.
+             */
+            if (status == ClusterStatus.Inactive && !this.hasDependent) {
+                log.info("[Cluster] " + clusterId + "is not notifying the parent, " +
+                        "since it is identified as the independent unit");
+
+            } else if (status == ClusterStatus.Terminating) {
+                // notify parent
+                log.info("[Cluster] " + clusterId + " is not notifying the parent, " +
+                        "since it is in Terminating State");
+
+            } else {
+                MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, this.status, this.clusterId);
+            }
+        //}
+
+    }
+    
     public String getServiceId() {
         return serviceId;
     }
@@ -252,15 +278,19 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
             AutoscalerRuleEvaluator autoscalerRuleEvaluator) {
         this.autoscalerRuleEvaluator = autoscalerRuleEvaluator;
     }
+    
+    public String getAppId() {
+    	return this.appId;
+    }
 
 
     @Override
     public void onParentEvent(MonitorStatusEvent statusEvent) {
         // send the ClusterTerminating event
-        if (statusEvent.getStatus() == GroupStatus.Terminating || statusEvent.getStatus() ==
-                ApplicationStatus.Terminating) {
-            StatusEventPublisher.sendClusterTerminatingEvent(appId, serviceId, clusterId);
-        }
+//        if (statusEvent.getStatus() == GroupStatus.Terminating || statusEvent.getStatus() ==
+//                ApplicationStatus.Terminating) {
+//            StatusEventPublisher.sendClusterTerminatingEvent(appId, serviceId, clusterId);
+//        }
     }
 
     @Override
@@ -287,4 +317,12 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
     }
 
     public abstract void terminateAllMembers();
+    
+    public boolean isStop() {
+        return stop;
+    }
+
+    public void setStop(boolean stop) {
+        this.stop = stop;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
index 2615651..1f17daa 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
@@ -18,6 +18,7 @@
  */
 package org.apache.stratos.autoscaler.monitor.cluster;
 
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.commons.configuration.XMLConfiguration;
@@ -33,8 +34,6 @@ import org.apache.stratos.cloud.controller.stub.pojo.Property;
 import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 
-import edu.emory.mathcs.backport.java.util.Arrays;
-
 /*
  * It is monitoring a kubernetes service cluster periodically.
  */

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/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 3365503..19d3704 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
@@ -27,11 +27,13 @@ import org.apache.stratos.autoscaler.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.PartitionContext;
 import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
 import org.apache.stratos.autoscaler.exception.TerminationException;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
 import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
+import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Member;
 import org.apache.stratos.messaging.domain.topology.Service;
@@ -552,6 +554,11 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
             ClusterRemovedEvent clusterRemovedEvent) {
 
     }
+    
+    @Override
+    public void handleDynamicUpdates(Properties properties) throws InvalidArgumentException {
+        
+    }
 
     private String getNetworkPartitionIdByMemberId(String memberId) {
         for (Service service : TopologyManager.getTopology().getServices()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/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 8a0959c..3c82bdd 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
@@ -28,14 +28,12 @@ import org.apache.stratos.autoscaler.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
 import org.apache.stratos.autoscaler.PartitionContext;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.autoscaler.util.ConfUtil;
-import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
@@ -68,7 +66,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
                 log.debug("Cluster monitor is running.. " + this.toString());
             }
             try {
-                if (!ClusterStatus.Inactive.equals(status)) {
+                if (!ClusterStatus.Inactive.equals(getStatus())) {
                     monitor();
                 } else {
                     if (log.isDebugEnabled()) {
@@ -173,9 +171,4 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
         return "VMLbClusterMonitor [clusterId=" + getClusterId() + ", serviceId=" + getServiceId() + "]";
     }
 
-    @Override
-    public void handleDynamicUpdates(Properties properties) throws InvalidArgumentException {
-        // TODO 
-        
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/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 dc97dc7..cc351de 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
@@ -28,10 +28,7 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.PartitionContext;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
-import org.apache.stratos.autoscaler.exception.TerminationException;
 import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher;
-import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
@@ -40,10 +37,10 @@ import org.apache.stratos.autoscaler.util.ConfUtil;
 import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.cloud.controller.stub.pojo.Property;
-import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.messaging.domain.topology.ClusterStatus;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
+import org.apache.stratos.messaging.domain.topology.ClusterStatus;
 
 /**
  * Is responsible for monitoring a service cluster. This runs periodically
@@ -66,22 +63,23 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
               new ConcurrentHashMap<String, NetworkPartitionContext>());
         readConfigurations();
     }
-
-    private static void terminateMember(String memberId) {
-        try {
-            CloudControllerClient.getInstance().terminate(memberId);
-
-        } catch (TerminationException e) {
-            log.error("Unable to terminate member [member id ] " + memberId, e);
-        }
-    }
+    
+//TODO why this method?
+//    private static void terminateMember(String memberId) {
+//        try {
+//            CloudControllerClient.getInstance().terminate(memberId);
+//
+//        } catch (TerminationException e) {
+//            log.error("Unable to terminate member [member id ] " + memberId, e);
+//        }
+//    }
 
     @Override
     public void run() {
         while (!isDestroyed()) {
             try {
-                if ((this.status.getCode() <= ClusterStatus.Active.getCode()) ||
-                        (this.status == ClusterStatus.Inactive && !hasDependent) ||
+                if ((getStatus().getCode() <= ClusterStatus.Active.getCode()) ||
+                        (getStatus() == ClusterStatus.Inactive && !hasDependent) ||
                         !this.hasFaultyMember) {
                     if (log.isDebugEnabled()) {
                         log.debug("Cluster monitor is running.. " + this.toString());
@@ -97,56 +95,57 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
                 log.error("Cluster monitor: Monitor failed." + this.toString(), e);
             }
             try {
-                Thread.sleep(monitorInterval);
+                Thread.sleep(getMonitorIntervalMilliseconds());
             } catch (InterruptedException ignore) {
             }
         }
 
 
     }
-
-    @Override
-    public void terminateAllMembers() {
-
-        Thread memberTerminator = new Thread(new Runnable() {
-            public void run() {
-
-                for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) {
-                    for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
-                        //if (log.isDebugEnabled()) {
-                        log.info("Starting to terminate all members in Network Partition [ " +
-                                networkPartitionContext.getId() + " ], Partition [ " +
-                                partitionContext.getPartitionId() + " ]");
-                        // }
-                        // need to terminate active, pending and obsolete members
-
-                        // active members
-                        for (MemberContext activeMemberCtxt : partitionContext.getActiveMembers()) {
-                            log.info("Terminating active member [member id] " + activeMemberCtxt.getMemberId());
-                            terminateMember(activeMemberCtxt.getMemberId());
-                        }
-
-                        // pending members
-                        for (MemberContext pendingMemberCtxt : partitionContext.getPendingMembers()) {
-                            log.info("Terminating pending member [member id] " + pendingMemberCtxt.getMemberId());
-                            terminateMember(pendingMemberCtxt.getMemberId());
-                        }
-
-                        // obsolete members
-                        for (String obsoleteMemberId : partitionContext.getObsoletedMembers()) {
-                            log.info("Terminating obsolete member [member id] " + obsoleteMemberId);
-                            terminateMember(obsoleteMemberId);
-                        }
-
-//                terminateAllFactHandle = AutoscalerRuleEvaluator.evaluateTerminateAll
-//                        (terminateAllKnowledgeSession, terminateAllFactHandle, partitionContext);
-                    }
-                }
-            }
-        }, "Member Terminator - [cluster id] " + this.clusterId);
-
-        memberTerminator.start();
-    }
+    
+//TODO why this method?
+//    @Override
+//    public void terminateAllMembers() {
+//
+//        Thread memberTerminator = new Thread(new Runnable() {
+//            public void run() {
+//
+//                for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) {
+//                    for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
+//                        //if (log.isDebugEnabled()) {
+//                        log.info("Starting to terminate all members in Network Partition [ " +
+//                                networkPartitionContext.getId() + " ], Partition [ " +
+//                                partitionContext.getPartitionId() + " ]");
+//                        // }
+//                        // need to terminate active, pending and obsolete members
+//
+//                        // active members
+//                        for (MemberContext activeMemberCtxt : partitionContext.getActiveMembers()) {
+//                            log.info("Terminating active member [member id] " + activeMemberCtxt.getMemberId());
+//                            terminateMember(activeMemberCtxt.getMemberId());
+//                        }
+//
+//                        // pending members
+//                        for (MemberContext pendingMemberCtxt : partitionContext.getPendingMembers()) {
+//                            log.info("Terminating pending member [member id] " + pendingMemberCtxt.getMemberId());
+//                            terminateMember(pendingMemberCtxt.getMemberId());
+//                        }
+//
+//                        // obsolete members
+//                        for (String obsoleteMemberId : partitionContext.getObsoletedMembers()) {
+//                            log.info("Terminating obsolete member [member id] " + obsoleteMemberId);
+//                            terminateMember(obsoleteMemberId);
+//                        }
+//
+////                terminateAllFactHandle = AutoscalerRuleEvaluator.evaluateTerminateAll
+////                        (terminateAllKnowledgeSession, terminateAllFactHandle, partitionContext);
+//                    }
+//                }
+//            }
+//        }, "Member Terminator - [cluster id] " + this.clusterId);
+//
+//        memberTerminator.start();
+//    }
 
     private boolean isPrimaryMember(MemberContext memberContext) {
         Properties props = memberContext.getProperties();
@@ -191,16 +190,16 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
                     }
                 }
                 primaryMemberListInNetworkPartition.addAll(primaryMemberListInPartition);
-                minCheckKnowledgeSession.setGlobal("clusterId", clusterId);
-                minCheckKnowledgeSession.setGlobal("lbRef", lbReferenceType);
-                minCheckKnowledgeSession.setGlobal("isPrimary", hasPrimary);
+                getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+                getMinCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
+                getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
 
 
                 if (log.isDebugEnabled()) {
                     log.debug(String.format("Running minimum check for partition %s ", partitionContext.getPartitionId()));
                 }
 
-                minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(minCheckKnowledgeSession
+                minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession()
                         , minCheckFactHandle, partitionContext);
 
                 //checking the status of the cluster
@@ -246,25 +245,6 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
         }
     }
 
-    private boolean isPrimaryMember(MemberContext memberContext) {
-        Properties props = memberContext.getProperties();
-        if (log.isDebugEnabled()) {
-            log.debug(" Properties [" + props + "] ");
-        }
-        if (props != null && props.getProperties() != null) {
-            for (Property prop : props.getProperties()) {
-                if (prop.getName().equals("PRIMARY")) {
-                    if (Boolean.parseBoolean(prop.getValue())) {
-                        log.debug("Adding member id [" + memberContext.getMemberId() + "] " +
-                                  "member instance id [" + memberContext.getInstanceId() + "] as a primary member");
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
     @Override
     protected void readConfigurations() {
         XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
@@ -320,7 +300,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
         // send the ClusterTerminating event
         if (statusEvent.getStatus() == GroupStatus.Terminating || statusEvent.getStatus() ==
                 ApplicationStatus.Terminating) {
-            ClusterStatusEventPublisher.sendClusterTerminatingEvent(appId, serviceId, clusterId);
+            ClusterStatusEventPublisher.sendClusterTerminatingEvent(getAppId(), getServiceId(), getClusterId());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
index d828309..1b9d44d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
@@ -18,24 +18,28 @@
  */
 package org.apache.stratos.autoscaler.status.checker;
 
+import java.util.Map;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
 import org.apache.stratos.autoscaler.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.PartitionContext;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
-import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher;
 import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher;
-import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor;
-import org.apache.stratos.messaging.domain.applications.*;
-import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
-import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.applications.Application;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.applications.Group;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
+import org.apache.stratos.messaging.domain.applications.ParentComponent;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.ClusterStatus;
+import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 
-import java.util.Map;
-
 /**
  * This will be used to evaluate the status of a group
  * and notify the interested parties about the status changes.


[2/3] git commit: fixing AS issues due to merging

Posted by ra...@apache.org.
fixing AS issues due to merging


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

Branch: refs/heads/docker-grouping-merge
Commit: 8b66cbaca6ad51b6ac8f669d82ac188062c7c723
Parents: fb80e2c
Author: R-Rajkumar <rr...@gmail.com>
Authored: Mon Nov 3 15:21:21 2014 +0530
Committer: R-Rajkumar <rr...@gmail.com>
Committed: Mon Nov 3 15:21:21 2014 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/AutoscalerContext.java   |   5 +-
 .../applications/ClusterInformation.java        |   2 +-
 .../applications/MTClusterInformation.java      |   2 +-
 .../applications/STClusterInformation.java      |   2 +-
 .../parser/DefaultApplicationParser.java        |  69 +-
 .../applications/pojo/ApplicationContext.java   |  12 -
 .../applications/topic/ApplicationBuilder.java  |   2 +-
 .../interfaces/AutoScalerServiceInterface.java  |   1 -
 .../AutoscalerTopologyEventReceiver.java        | 770 ++++---------------
 .../monitor/AbstractClusterMonitor.java         | 277 -------
 .../monitor/ParentComponentMonitor.java         |   2 +
 .../application/ApplicationMonitorFactory.java  |  32 +-
 .../monitor/cluster/AbstractClusterMonitor.java |  62 +-
 .../KubernetesServiceClusterMonitor.java        |   3 +-
 .../monitor/cluster/VMClusterMonitor.java       |   7 +
 .../monitor/cluster/VMLbClusterMonitor.java     |   9 +-
 .../cluster/VMServiceClusterMonitor.java        | 148 ++--
 .../status/checker/StatusChecker.java           |  18 +-
 18 files changed, 331 insertions(+), 1092 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
index e8553bc..88ff3cf 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java
@@ -23,17 +23,14 @@ package org.apache.stratos.autoscaler;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor;
+import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 
 /**
  * It holds all cluster monitors which are active in stratos.
  */
 public class AutoscalerContext {
 
-    private static final Log log = LogFactory.getLog(AutoscalerContext.class);
     private static final AutoscalerContext INSTANCE = new AutoscalerContext();
 
     // Map<ClusterId, AbstractClusterMonitor>

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java
index 5fd6d57..e87b13b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.stratos.cloud.controller.application;
+package org.apache.stratos.autoscaler.applications;
 
 public interface ClusterInformation {
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java
index a0a59d4..36185f9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java
@@ -19,7 +19,7 @@
 
 package org.apache.stratos.autoscaler.applications;
 
-import org.apache.stratos.cloud.controller.application.ClusterInformation;
+import org.apache.stratos.autoscaler.applications.ClusterInformation;
 
 public class MTClusterInformation implements ClusterInformation {
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java
index 9a5bea8..f288233 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java
@@ -19,7 +19,7 @@
 
 package org.apache.stratos.autoscaler.applications;
 
-import org.apache.stratos.cloud.controller.application.ClusterInformation;
+import org.apache.stratos.autoscaler.applications.ClusterInformation;
 
 public class STClusterInformation implements ClusterInformation {
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index 16a14de..ce68f8a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -17,41 +17,40 @@
  * under the License.
  */
 
-package org.apache.stratos.cloud.controller.application.parser;
+package org.apache.stratos.autoscaler.applications.parser;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.applications.ApplicationUtils;
+import org.apache.stratos.autoscaler.applications.ClusterInformation;
 import org.apache.stratos.autoscaler.applications.MTClusterInformation;
 import org.apache.stratos.autoscaler.applications.STClusterInformation;
-import org.apache.stratos.autoscaler.applications.pojo.*;
+import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext;
+import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
+import org.apache.stratos.autoscaler.applications.pojo.GroupContext;
+import org.apache.stratos.autoscaler.applications.pojo.SubscribableContext;
+import org.apache.stratos.autoscaler.applications.pojo.SubscribableInfoContext;
 import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.exception.ApplicationDefinitionException;
 import org.apache.stratos.autoscaler.exception.CartridgeInformationException;
 import org.apache.stratos.autoscaler.pojo.ServiceGroup;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
-import org.apache.stratos.cloud.controller.application.ClusterInformation;
-import org.apache.stratos.cloud.controller.application.MTClusterInformation;
-import org.apache.stratos.cloud.controller.application.STClusterInformation;
-import org.apache.stratos.cloud.controller.exception.ApplicationDefinitionException;
-import org.apache.stratos.cloud.controller.interfaces.ApplicationParser;
-import org.apache.stratos.cloud.controller.pojo.*;
-import org.apache.stratos.cloud.controller.pojo.Cartridge;
-import org.apache.stratos.cloud.controller.pojo.Properties;
-import org.apache.stratos.cloud.controller.pojo.application.*;
-import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
 import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
 import org.apache.stratos.messaging.domain.applications.DependencyOrder;
 import org.apache.stratos.messaging.domain.applications.Group;
 
-import java.util.*;
-
 /**
  * Default implementation of the Application Parser. One Application should be processed by one
  * instance of the DefaultApplicationParser.
@@ -123,11 +122,6 @@ public class DefaultApplicationParser implements ApplicationParser {
         return applicationClusterContexts;
     }
 
-    @Override
-    public Set<MetaDataHolder> getPayloadData() throws ApplicationDefinitionException {
-        return metaDataHolders;
-    }
-
     /**
      * Extract Group information from Application Definition
      *
@@ -273,7 +267,7 @@ public class DefaultApplicationParser implements ApplicationParser {
             if (appCtxt.getComponents().getSubscribableContexts() != null) {
                 clusterDataMap = parseLeafLevelSubscriptions(appCtxt.getApplicationId(), appCtxt.getTenantId(),
                         application.getKey(), null, Arrays.asList(appCtxt.getComponents().getSubscribableContexts()),
-                        subscribableInfoCtxts, appCtxt.getProperties());
+                        subscribableInfoCtxts);
                 application.setClusterData(clusterDataMap);
                 //clusters.addAll(clusterDataHolder.getApplicationClusterContexts());
             }
@@ -282,7 +276,7 @@ public class DefaultApplicationParser implements ApplicationParser {
             if (appCtxt.getComponents().getGroupContexts() != null) {
                 application.setGroups(parseGroups(appCtxt.getApplicationId(), appCtxt.getTenantId(),
                         application.getKey(), Arrays.asList(appCtxt.getComponents().getGroupContexts()),
-                        subscribableInfoCtxts, definedGroupCtxts, appCtxt.getProperties()));
+                        subscribableInfoCtxts, definedGroupCtxts));
             }
 
             // get top level Dependency definitions
@@ -347,13 +341,13 @@ public class DefaultApplicationParser implements ApplicationParser {
      */
     private Map<String, Group> parseGroups (String appId, int tenantId, String key, List<GroupContext> groupCtxts,
                                            Map<String, SubscribableInfoContext> subscribableInformation,
-                                           Map<String, GroupContext> definedGroupCtxts, Properties properties)
+                                           Map<String, GroupContext> definedGroupCtxts)
             throws ApplicationDefinitionException {
 
         Map<String, Group> groupAliasToGroup = new HashMap<String, Group>();
 
         for (GroupContext groupCtxt : groupCtxts) {
-            Group group = parseGroup(appId, tenantId, key, groupCtxt, subscribableInformation, definedGroupCtxts, properties);
+            Group group = parseGroup(appId, tenantId, key, groupCtxt, subscribableInformation, definedGroupCtxts);
             groupAliasToGroup.put(group.getAlias(), group);
         }
 
@@ -424,7 +418,7 @@ public class DefaultApplicationParser implements ApplicationParser {
      */
     private Group parseGroup (String appId, int tenantId, String key, GroupContext groupCtxt,
                              Map<String, SubscribableInfoContext> subscribableInfoCtxts,
-                             Map<String, GroupContext> definedGroupCtxts, Properties properties)
+                             Map<String, GroupContext> definedGroupCtxts)
             throws ApplicationDefinitionException {
 
         // check if are in the defined Group set
@@ -452,7 +446,7 @@ public class DefaultApplicationParser implements ApplicationParser {
         // get group level Subscribables
         if (groupCtxt.getSubscribableContexts() != null) {
             clusterDataMap = parseLeafLevelSubscriptions(appId, tenantId, key, groupCtxt.getName(),
-                    Arrays.asList(groupCtxt.getSubscribableContexts()), subscribableInfoCtxts, properties);
+                    Arrays.asList(groupCtxt.getSubscribableContexts()), subscribableInfoCtxts);
             group.setClusterData(clusterDataMap);
         }
 
@@ -465,7 +459,7 @@ public class DefaultApplicationParser implements ApplicationParser {
                 subGroupCtxt = definedGroupCtxts.get(subGroupCtxt.getAlias());
                 Group nestedGroup = parseGroup(appId, tenantId, key, subGroupCtxt,
                         subscribableInfoCtxts,
-                        definedGroupCtxts, properties);
+                        definedGroupCtxts);
                 nestedGroups.put(nestedGroup.getAlias(), nestedGroup);
             }
 
@@ -569,8 +563,7 @@ public class DefaultApplicationParser implements ApplicationParser {
      */
     private Map<String, ClusterDataHolder> parseLeafLevelSubscriptions (String appId, int tenantId, String key, String groupName,
                                                                  List<SubscribableContext> subscribableCtxts,
-                                                                 Map<String, SubscribableInfoContext> subscribableInfoCtxts,
-                                                                 Properties properties)
+                                                                 Map<String, SubscribableInfoContext> subscribableInfoCtxts)
             throws ApplicationDefinitionException {
 
         Map<String, ClusterDataHolder> clusterDataMap = new HashMap<String, ClusterDataHolder>();
@@ -608,14 +601,12 @@ public class DefaultApplicationParser implements ApplicationParser {
 
             String hostname = clusterInfo.getHostName(subscribableCtxt.getAlias(), cartridgeInfo.getHostName());
             String clusterId = clusterInfo.getClusterId(subscribableCtxt.getAlias(), subscribableCtxt.getType());
-            boolean isKubernetesCluster = StratosConstants.KUBERNETES_DEPLOYER_TYPE.equals(cartridge.getDeployerType());
 
             // create and collect this cluster's information
             assert subscribableInfoCtxt != null;
             ApplicationClusterContext appClusterCtxt = createApplicationClusterContext(appId, groupName, cartridgeInfo,
                     key, tenantId, subscribableInfoCtxt.getRepoUrl(), subscribableCtxt.getAlias(),
-                    clusterId, hostname, subscribableInfoCtxt.getDeploymentPolicy(),
-                    false, isKubernetesCluster, subscribableInfoCtxt.getDependencyAliases(), properties);
+                    clusterId, hostname, subscribableInfoCtxt.getDeploymentPolicy(), false, subscribableInfoCtxt.getDependencyAliases());
 
             appClusterCtxt.setAutoscalePolicyName(subscribableInfoCtxt.getAutoscalingPolicy());
             this.applicationClusterContexts.add(appClusterCtxt);
@@ -640,8 +631,7 @@ public class DefaultApplicationParser implements ApplicationParser {
      * @param clusterId Cluster id
      * @param hostname Hostname
      * @param deploymentPolicy Deployment policy used
-     * @param isLBCluster if this cluster is an LB
-     * @param isKubernetesCluster if this cluster is a Kubernetes cluster
+     * @param isLB if this cluster is an LB
      * @return ApplicationClusterContext object with relevant information
      *
      * @throws ApplicationDefinitionException If any error occurs
@@ -649,17 +639,14 @@ public class DefaultApplicationParser implements ApplicationParser {
     private ApplicationClusterContext createApplicationClusterContext (String appId, String groupName, CartridgeInfo cartridgeInfo,
                                                                        String subscriptionKey, int tenantId, String repoUrl,
                                                                        String alias, String clusterId, String hostname,
-                                                                       String deploymentPolicy, boolean isLBCluster,
-                                                                       boolean isKubernetesCluster, String[] dependencyAliases,
-                                                                       Properties properties)
+                                                                       String deploymentPolicy, boolean isLB, String[] dependencyAliases)
             throws ApplicationDefinitionException {
 
         // Create text payload
         String textPayload = ApplicationUtils.createPayload(appId, groupName, cartridgeInfo, subscriptionKey, tenantId, clusterId,
                 hostname, repoUrl, alias, null, dependencyAliases).toString();
 
-        return new ApplicationClusterContext(cartridgeInfo.getType(), clusterId, hostname, textPayload, deploymentPolicy, 
-                isLB, isKubernetesCluster, properties);
+        return new ApplicationClusterContext(cartridgeInfo.getType(), clusterId, hostname, textPayload, deploymentPolicy, isLB);
     }
 
     private CartridgeInfo getCartridge (String cartridgeType) throws ApplicationDefinitionException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
index b3560c3..5d97ad5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
@@ -19,8 +19,6 @@
 
 package org.apache.stratos.autoscaler.applications.pojo;
 
-import org.apache.stratos.cloud.controller.pojo.Properties;
-
 import java.io.Serializable;
 
 public class ApplicationContext implements Serializable {
@@ -41,8 +39,6 @@ public class ApplicationContext implements Serializable {
 
     private SubscribableInfoContext[] subscribableInfoContexts;
 
-    private Properties properties;
-
     public ApplicationContext() {
     }
 
@@ -101,12 +97,4 @@ public class ApplicationContext implements Serializable {
     public void setTeantAdminUsername(String teantAdminUsername) {
         this.teantAdminUsername = teantAdminUsername;
     }
-
-    public Properties getProperties() {
-        return properties;
-    }
-
-    public void setProperties(Properties properties) {
-        this.properties = properties;
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index bf0ad01..a92ce09 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -25,8 +25,8 @@ import org.apache.stratos.autoscaler.applications.ApplicationHolder;
 import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
-import org.apache.stratos.autoscaler.monitor.ApplicationMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor;
+import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory;
 import org.apache.stratos.messaging.domain.applications.*;
 import org.apache.stratos.messaging.domain.topology.Topology;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index 16e809d..74c9c8c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@ -1,4 +1,3 @@
-package org.apache.stratos.autoscaler.interfaces;
 /*
  *
  * Licensed to the Apache Software Foundation (ASF) under one

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
index f449560..0f52765 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -19,57 +19,42 @@
 
 package org.apache.stratos.autoscaler.message.receiver.topology;
 
+import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.AutoscalerContext;
+import org.apache.stratos.autoscaler.MemberStatsContext;
 import org.apache.stratos.autoscaler.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.*;
+import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
+import org.apache.stratos.autoscaler.PartitionContext;
 import org.apache.stratos.autoscaler.applications.ApplicationHolder;
+import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher;
 import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
-import org.apache.stratos.autoscaler.exception.PartitionValidationException;
-import org.apache.stratos.autoscaler.exception.PolicyValidationException;
+import org.apache.stratos.autoscaler.exception.TerminationException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
-import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher;
 import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.grouping.topic.InstanceNotificationPublisher;
-import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
-import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.ApplicationMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor;
 import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.group.GroupMonitor;
-import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
-import org.apache.stratos.messaging.domain.topology.Application;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
-import org.apache.stratos.messaging.domain.topology.Cluster;
-import org.apache.stratos.messaging.domain.topology.ClusterDataHolder;
-import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
-import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
 import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.applications.Applications;
 import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
-import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.ClusterStatus;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.domain.topology.Topology;
 import org.apache.stratos.messaging.event.Event;
-import org.apache.stratos.messaging.event.topology.*;
-import org.apache.stratos.messaging.listener.applications.ApplicationUndeployedEventListener;
-import org.apache.stratos.messaging.listener.topology.*;
-import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager;
-import org.apache.stratos.messaging.event.topology.ApplicationActivatedEvent;
-import org.apache.stratos.messaging.event.topology.ApplicationCreatedEvent;
-import org.apache.stratos.messaging.event.topology.ApplicationTerminatedEvent;
-import org.apache.stratos.messaging.event.topology.ApplicationTerminatingEvent;
 import org.apache.stratos.messaging.event.topology.ApplicationUndeployedEvent;
 import org.apache.stratos.messaging.event.topology.ClusterActivatedEvent;
 import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
@@ -77,33 +62,23 @@ import org.apache.stratos.messaging.event.topology.ClusterInactivateEvent;
 import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
 import org.apache.stratos.messaging.event.topology.ClusterTerminatedEvent;
 import org.apache.stratos.messaging.event.topology.ClusterTerminatingEvent;
-import org.apache.stratos.messaging.event.topology.GroupActivatedEvent;
-import org.apache.stratos.messaging.event.topology.GroupInactivateEvent;
-import org.apache.stratos.messaging.event.topology.GroupTerminatedEvent;
-import org.apache.stratos.messaging.event.topology.GroupTerminatingEvent;
 import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
 import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent;
 import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent;
 import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent;
-import org.apache.stratos.messaging.listener.topology.ApplicationActivatedEventListener;
-import org.apache.stratos.messaging.listener.topology.ApplicationCreatedEventListener;
-import org.apache.stratos.messaging.listener.topology.ApplicationTerminatedEventListener;
-import org.apache.stratos.messaging.listener.topology.ApplicationTerminatingEventListener;
-import org.apache.stratos.messaging.listener.topology.ApplicationUndeployedEventListener;
+import org.apache.stratos.messaging.listener.applications.ApplicationUndeployedEventListener;
 import org.apache.stratos.messaging.listener.topology.ClusterActivatedEventListener;
 import org.apache.stratos.messaging.listener.topology.ClusterCreatedEventListener;
 import org.apache.stratos.messaging.listener.topology.ClusterInActivateEventListener;
 import org.apache.stratos.messaging.listener.topology.ClusterRemovedEventListener;
+import org.apache.stratos.messaging.listener.topology.ClusterResetEventListener;
 import org.apache.stratos.messaging.listener.topology.ClusterTerminatedEventListener;
 import org.apache.stratos.messaging.listener.topology.ClusterTerminatingEventListener;
 import org.apache.stratos.messaging.listener.topology.CompleteTopologyEventListener;
-import org.apache.stratos.messaging.listener.topology.GroupActivatedEventListener;
-import org.apache.stratos.messaging.listener.topology.GroupInActivateEventListener;
-import org.apache.stratos.messaging.listener.topology.GroupTerminatedEventListener;
-import org.apache.stratos.messaging.listener.topology.GroupTerminatingEventListener;
 import org.apache.stratos.messaging.listener.topology.MemberActivatedEventListener;
 import org.apache.stratos.messaging.listener.topology.MemberMaintenanceListener;
 import org.apache.stratos.messaging.listener.topology.MemberReadyToShutdownEventListener;
+import org.apache.stratos.messaging.listener.topology.MemberStartedEventListener;
 import org.apache.stratos.messaging.listener.topology.MemberTerminatedEventListener;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyEventReceiver;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
@@ -221,43 +196,12 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
             }
         });
 
-
-        /*topologyEventReceiver.addEventListener(new ApplicationCreatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-                try {
-                    log.info("[ApplicationCreatedEvent] Received: " + event.getClass());
-                    ApplicationCreatedEvent applicationCreatedEvent = (ApplicationCreatedEvent) event;
-                    try {
-
-                        //acquire read lock
-                        TopologyManager.acquireReadLockForApplication(
-                                applicationCreatedEvent.getApplication().getUniqueIdentifier());
-                        //start the application monitor
-                        startApplicationMonitor(applicationCreatedEvent.getApplication().getUniqueIdentifier());
-                    } catch (Exception e) {
-                        String msg = "Error processing event " + e.getLocalizedMessage();
-                        log.error(msg, e);
-                    } finally {
-                        //release read lock
-                        TopologyManager.releaseReadLockForApplication(
-                                applicationCreatedEvent.getApplication().getUniqueIdentifier());
-                    }
-                } catch (ClassCastException e) {
-                    String msg = "Error while casting the event " + e.getLocalizedMessage();
-                    log.error(msg, e);
-                }
-
-            }
-        });*/
-
         topologyEventReceiver.addEventListener(new ClusterActivatedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 log.info("[ClusterActivatedEvent] Received: " + event.getClass());
 
                 ClusterActivatedEvent clusterActivatedEvent = (ClusterActivatedEvent) event;
-                String appId = clusterActivatedEvent.getAppId();
                 String clusterId = clusterActivatedEvent.getClusterId();
                 AbstractClusterMonitor clusterMonitor =
                         AutoscalerContext.getInstance().getClusterMonitor(clusterId);
@@ -291,23 +235,16 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
         topologyEventReceiver.addEventListener(new ClusterCreatedEventListener() {
             @Override
             protected void onEvent(Event event) {
-
                 log.info("[ClusterCreatedEvent] Received: " + event.getClass());
-
-                ClusterCreatedEvent clusterCreatedEvent = (ClusterCreatedEvent) event;
-                //TODO notify the monitor about cluster creation
-
             }
         });
 
         topologyEventReceiver.addEventListener(new ClusterInActivateEventListener() {
             @Override
             protected void onEvent(Event event) {
-
                 log.info("[ClusterInActivateEvent] Received: " + event.getClass());
 
                 ClusterInactivateEvent clusterInactivateEvent = (ClusterInactivateEvent) event;
-                String appId = clusterInactivateEvent.getAppId();
                 String clusterId = clusterInactivateEvent.getClusterId();
                 AbstractClusterMonitor clusterMonitor =
                         AutoscalerContext.getInstance().getClusterMonitor(clusterId);
@@ -351,11 +288,9 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
         topologyEventReceiver.addEventListener(new ClusterTerminatedEventListener() {
             @Override
             protected void onEvent(Event event) {
-
                 log.info("[ClusterTerminatedEvent] Received: " + event.getClass());
 
                 ClusterTerminatedEvent clusterTerminatedEvent = (ClusterTerminatedEvent) event;
-                String appId = clusterTerminatedEvent.getAppId();
                 String clusterId = clusterTerminatedEvent.getClusterId();
                 AbstractClusterMonitor clusterMonitor =
                         AutoscalerContext.getInstance().getClusterMonitor(clusterId);
@@ -367,105 +302,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
             }
         });
 
-        /*topologyEventReceiver.addEventListener(new GroupActivatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[GroupActivatedEvent] Received: " + event.getClass());
-
-                GroupActivatedEvent groupActivatedEvent = (GroupActivatedEvent) event;
-                String appId = groupActivatedEvent.getAppId();
-                String groupId = groupActivatedEvent.getGroupId();
-
-                ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
-                GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId);
-
-                //changing the status in the monitor, will notify its parent monitor
-                if (monitor != null) {
-                    monitor.setStatus(GroupStatus.Active);
-                }
-            }
-        });
-
-        topologyEventReceiver.addEventListener(new GroupInActivateEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[GroupInActivateEvent] Received: " + event.getClass());
-
-                GroupInactivateEvent groupInactivateEvent = (GroupInactivateEvent) event;
-                String appId = groupInactivateEvent.getAppId();
-                String groupId = groupInactivateEvent.getGroupId();
-
-                ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
-                GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId);
-
-                //changing the status in the monitor, will notify its parent monitor
-                if (monitor != null) {
-                    monitor.setStatus(GroupStatus.Inactive);
-                }
-
-            }
-        });
-
-        topologyEventReceiver.addEventListener(new GroupTerminatingEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[GroupTerminatingEvent] Received: " + event.getClass());
-
-                GroupTerminatingEvent groupTerminatingEvent = (GroupTerminatingEvent) event;
-                String appId = groupTerminatingEvent.getAppId();
-                String groupId = groupTerminatingEvent.getGroupId();
-
-                ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
-                GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId);
-
-                //changing the status in the monitor, will notify its parent monitor
-                if (monitor != null) {
-                    monitor.setStatus(GroupStatus.Terminating);
-                }
-
-            }
-        });
-
-        topologyEventReceiver.addEventListener(new GroupTerminatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[GroupTerminatedEvent] Received: " + event.getClass());
-
-                GroupTerminatedEvent groupTerminatedEvent = (GroupTerminatedEvent) event;
-                String appId = groupTerminatedEvent.getAppId();
-                String groupId = groupTerminatedEvent.getGroupId();
-
-                ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
-                GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId);
-
-                //changing the status in the monitor, will notify its parent monitor
-                if (monitor != null) {
-                    monitor.setStatus(GroupStatus.Terminated);
-                }
-
-            }
-        });
-
-        topologyEventReceiver.addEventListener(new ApplicationActivatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[ApplicationActivatedEvent] Received: " + event.getClass());
-
-                ApplicationActivatedEvent applicationActivatedEvent = (ApplicationActivatedEvent) event;
-                String appId = applicationActivatedEvent.getAppId();
-
-                ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId);
-                if(appMonitor != null) {
-                    appMonitor.setStatus(ApplicationStatus.Active);
-                }
-            }
-        });*/
-
         topologyEventReceiver.addEventListener(new ApplicationUndeployedEventListener() {
             @Override
             protected void onEvent(Event event) {
@@ -482,8 +318,8 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
                 Set<ClusterDataHolder> clusterDataHolders = applicationUndeployedEvent.getClusterData();
                 if (clusterDataHolders != null) {
                     for (ClusterDataHolder clusterDataHolder : clusterDataHolders) {
-                        ClusterMonitor clusterMonitor =
-                                   ((ClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterDataHolder.getClusterId()));
+                        VMClusterMonitor clusterMonitor =
+                                   ((VMClusterMonitor) AutoscalerContext.getInstance().getClusterMonitor(clusterDataHolder.getClusterId()));
                         if (clusterMonitor == null) {
                             // Cluster Monitor not found; send Cluster Terminated event to cleanup
                             ClusterStatusEventPublisher.sendClusterTerminatedEvent(
@@ -594,269 +430,95 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
             }
         });
 
-
-        /*topologyEventReceiver.addEventListener(new ApplicationTerminatingEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[ApplicationTerminatingEvent] Received: " + event.getClass());
-
-                ApplicationTerminatingEvent appTerminatingEvent = (ApplicationTerminatingEvent) event;
-
-                // acquire reead locks for application and relevant clusters
-                TopologyManager.acquireReadLockForApplication(appTerminatingEvent.getAppId());
-
-                try {
-                    ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
-                            getAppMonitor(appTerminatingEvent.getAppId());
-
-                    if (appMonitor != null) {
-                        // update the status as Terminating
-                        appMonitor.setStatus(ApplicationStatus.Terminating);
-
-                    } else {
-                        log.warn("Application Monitor cannot be found for the undeployed [application] "
-                                + appTerminatingEvent.getAppId());
-                    }
-
-                } finally {
-                    TopologyManager.
-                            releaseReadLockForApplication(appTerminatingEvent.getAppId());
-                }
-            }
-        });*/
-
-//        topologyEventReceiver.addEventListener(new ApplicationRemovedEventListener() {
+        topologyEventReceiver.addEventListener(new MemberReadyToShutdownEventListener() {
+        	@Override
+        	protected void onEvent(Event event) {
+	        	try {
+	        		MemberReadyToShutdownEvent memberReadyToShutdownEvent = (MemberReadyToShutdownEvent) event;
+	        		String clusterId = memberReadyToShutdownEvent.getClusterId();
+	        		AutoscalerContext asCtx = AutoscalerContext.getInstance();
+	        		AbstractClusterMonitor monitor;
+	        		monitor = asCtx.getClusterMonitor(clusterId);
+	        		if (null == monitor) {
+	        			if (log.isDebugEnabled()) {
+	        				log.debug(String.format("A cluster monitor is not found in autoscaler context "
+	        						+ "[cluster] %s", clusterId));
+	        			}
+	        			return;
+	        		}
+	        		monitor.handleMemberReadyToShutdownEvent(memberReadyToShutdownEvent);
+	        	} catch (Exception e) {
+	        		String msg = "Error processing event " + e.getLocalizedMessage();
+	        		log.error(msg, e);
+	        	}
+        	}
+        });
+//TODO delete this if we don't want this
+//        topologyEventReceiver.addEventListener(new ClusterRemovedEventListener() {
 //            @Override
-//            protected void onChildEvent(Event event) {
+//            protected void onEvent(Event event) {
+//
+//                ClusterRemovedEvent clusterRemovedEvent = null;
+//                try {
+//                    clusterRemovedEvent = (ClusterRemovedEvent) event;
+//                    //TopologyManager.acquireReadLock();
+//                    TopologyManager.acquireReadLockForCluster(clusterRemovedEvent.getServiceName(),
+//                            clusterRemovedEvent.getClusterId());
 //
-//                log.info("[ApplicationRemovedEvent] Received: " + event.getClass());
+//                    String clusterId = clusterRemovedEvent.getClusterId();
+//                    String deploymentPolicy = clusterRemovedEvent.getDeploymentPolicy();
 //
-//                ApplicationRemovedEvent applicationRemovedEvent = (ApplicationRemovedEvent) event;
+//                    AbstractClusterMonitor monitor;
 //
-//                //acquire read lock
-//                TopologyManager.acquireReadLockForApplication(applicationRemovedEvent.getApplicationId());
-//                Set<ClusterDataHolder> clusterDataHolders = applicationRemovedEvent.getClusterData();
-//                if (clusterDataHolders != null) {
-//                    for (ClusterDataHolder clusterData : clusterDataHolders) {
-//                        TopologyManager.acquireReadLockForCluster(clusterData.getServiceType(),
-//                                clusterData.getClusterId());
-//                    }
-//                }
+//                    if (clusterRemovedEvent.isLbCluster()) {
+//                        DeploymentPolicy depPolicy = PolicyManager.getInstance().
+//                                getDeploymentPolicy(deploymentPolicy);
+//                        if (depPolicy != null) {
+//                            List<NetworkPartitionLbHolder> lbHolders = PartitionManager.getInstance()
+//                                    .getNetworkPartitionLbHolders(depPolicy);
 //
-//                try {
-//                    //TODO remove monitors as well as any starting or pending threads
-//                    ApplicationMonitor monitor = AutoscalerContext.getInstance().
-//                            getAppMonitor(applicationRemovedEvent.getApplicationId());
-//                    if (monitor != null) {
-//                        //List<String> clusters = monitor.
-//                        //        findClustersOfApplication(applicationRemovedEvent.getApplicationId());
-//                        for (ClusterDataHolder clusterData : clusterDataHolders) {
-//                            //stopping the cluster monitor and remove it from the AS
-//                            ((ClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterData.getClusterId())).
-//                                    setDestroyed(true);
-//                            AutoscalerContext.getInstance().removeMonitor(clusterData.getClusterId());
+//                            for (NetworkPartitionLbHolder networkPartitionLbHolder : lbHolders) {
+//                                // removes lb cluster ids
+//                                boolean isRemoved = networkPartitionLbHolder.removeLbClusterId(clusterId);
+//                                if (isRemoved) {
+//                                    log.info("Removed the lb cluster [id]:"
+//                                            + clusterId
+//                                            + " reference from Network Partition [id]: "
+//                                            + networkPartitionLbHolder
+//                                            .getNetworkPartitionId());
+//
+//                                }
+//                                if (log.isDebugEnabled()) {
+//                                    log.debug(networkPartitionLbHolder);
+//                                }
+//
+//                            }
 //                        }
-//                        //removing the application monitor
-//                        AutoscalerContext.getInstance().
-//                                removeAppMonitor(applicationRemovedEvent.getApplicationId());
+//                        monitor = AutoscalerContext.getInstance()
+//                                .removeLbMonitor(clusterId);
+//
 //                    } else {
-//                        log.warn("Application Monitor cannot be found for the removed [application] "
-//                                + applicationRemovedEvent.getApplicationId());
+//                        monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance()
+//                                .removeMonitor(clusterId);
 //                    }
 //
-//
-//                } finally {
-//                    //release read lock
-//                    if (clusterDataHolders != null) {
-//                        for (ClusterDataHolder clusterData : clusterDataHolders) {
-//                            TopologyManager.releaseReadLockForCluster(clusterData.getServiceType(),
-//                                    clusterData.getClusterId());
-//                        }
+//                    // runTerminateAllRule(monitor);
+//                    if (monitor != null) {
+//                        monitor.destroy();
+//                        log.info(String.format("Cluster monitor has been removed successfully: [cluster] %s ",
+//                                clusterId));
 //                    }
-//                    TopologyManager.releaseReadLockForApplication(applicationRemovedEvent.getApplicationId());
+//                } catch (Exception e) {
+//                    log.error("Error processing event", e);
+//                } finally {
+//                    //TopologyManager.releaseReadLock();
+//                    TopologyManager.releaseReadLockForCluster(clusterRemovedEvent.getServiceName(),
+//                            clusterRemovedEvent.getClusterId());
 //                }
-//
 //            }
+//
 //        });
 
-        /*topologyEventReceiver.addEventListener(new ApplicationTerminatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                log.info("[ApplicationTerminatedEvent] Received: " + event.getClass());
-
-                ApplicationTerminatedEvent applicationRemovedEvent = (ApplicationTerminatedEvent) event;
-
-                // no need to access the locks since the Topology is not accessed
-                //acquire read lock
-                //TopologyManager.acquireReadLockForApplication(applicationRemovedEvent.getAppId());
-                Set<ClusterDataHolder> clusterDataHolders = applicationRemovedEvent.getClusterData();
-//                if (clusterDataHolders != null) {
-//                    for (ClusterDataHolder clusterData : clusterDataHolders) {
-//                        TopologyManager.acquireReadLockForCluster(clusterData.getServiceType(),
-//                                clusterData.getClusterId());
-//                    }
-//                }
-
-                try {
-                    //TODO remove monitors as well as any starting or pending threads
-                    ApplicationMonitor monitor = AutoscalerContext.getInstance().
-                            getAppMonitor(applicationRemovedEvent.getAppId());
-                    if (monitor != null) {
-                        //List<String> clusters = monitor.
-                        //        findClustersOfApplication(applicationRemovedEvent.getApplicationId());
-                        for (ClusterDataHolder clusterData : clusterDataHolders) {
-                            //stopping the cluster monitor and remove it from the AS
-                            ClusterMonitor clusterMonitor = ((ClusterMonitor)
-                                    AutoscalerContext.getInstance().getMonitor(clusterData.getClusterId()));
-                            if (clusterMonitor != null) {
-                                clusterMonitor.setDestroyed(true);
-                                AutoscalerContext.getInstance().removeMonitor(clusterData.getClusterId());
-                            } else {
-                                log.warn("Cluster Monitor not found for [ cluster id ] " +
-                                        clusterData.getClusterId() + ", unable to remove");
-                            }
-                        }
-                        //removing the application monitor
-                        AutoscalerContext.getInstance().
-                                removeAppMonitor(applicationRemovedEvent.getAppId());
-                    } else {
-                        log.warn("Application Monitor cannot be found for the terminated [application] "
-                                + applicationRemovedEvent.getAppId() + ", unable to remove");
-                    }
-
-
-                } finally {
-                    //release read lock
-//                    if (clusterDataHolders != null) {
-//                        for (ClusterDataHolder clusterData : clusterDataHolders) {
-//                            TopologyManager.releaseReadLockForCluster(clusterData.getServiceType(),
-//                                    clusterData.getClusterId());
-//                        }
-//                    }
-//                    TopologyManager.releaseReadLockForApplication(applicationRemovedEvent.getAppId());
-                }
-
-            }
-        });
-*/
-        topologyEventReceiver.addEventListener(new MemberReadyToShutdownEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-                try {
-                    MemberReadyToShutdownEvent memberReadyToShutdownEvent =
-                            (MemberReadyToShutdownEvent) event;
-                    AutoscalerContext asCtx = AutoscalerContext.getInstance();
-                    AbstractClusterMonitor monitor;
-                    String clusterId = memberReadyToShutdownEvent.getClusterId();
-                    String memberId = memberReadyToShutdownEvent.getMemberId();
-
-                    if (asCtx.monitorExist(clusterId)) {
-                        monitor = (AbstractClusterMonitor) asCtx.getMonitor(clusterId);
-                    } else if (asCtx.lbMonitorExist(clusterId)) {
-                        monitor = asCtx.getLBMonitor(clusterId);
-                    } else {
-                        if (log.isDebugEnabled()) {
-                            log.debug(String.format("A cluster monitor is not found " +
-                                    "in autoscaler context [cluster] %s", clusterId));
-                        }
-                        return;
-                    }
-
-                    NetworkPartitionContext nwPartitionCtxt;
-                    nwPartitionCtxt = monitor.getNetworkPartitionCtxt(
-                            memberReadyToShutdownEvent.getNetworkPartitionId());
-
-                    // start a new member in the same Partition
-                    String partitionId = monitor.getPartitionOfMember(memberId);
-                    PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId);
-
-
-                    // terminate the shutdown ready member
-                    CloudControllerClient ccClient = CloudControllerClient.getInstance();
-                    ccClient.terminate(memberId);
-
-                    // remove from active member list
-                    partitionCtxt.removeActiveMemberById(memberId);
-
-                    if (log.isInfoEnabled()) {
-                        log.info(String.format("Member is terminated and removed from the active " +
-                                        "members list: [member] %s [partition] %s [cluster] %s ",
-                                memberId, partitionId, clusterId));
-                    }
-                } catch (TerminationException e) {
-                    log.error(e);
-                }
-            }
-
-        });
-
-        topologyEventReceiver.addEventListener(new ClusterRemovedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                ClusterRemovedEvent clusterRemovedEvent = null;
-                try {
-                    clusterRemovedEvent = (ClusterRemovedEvent) event;
-                    //TopologyManager.acquireReadLock();
-                    TopologyManager.acquireReadLockForCluster(clusterRemovedEvent.getServiceName(),
-                            clusterRemovedEvent.getClusterId());
-
-                    String clusterId = clusterRemovedEvent.getClusterId();
-                    String deploymentPolicy = clusterRemovedEvent.getDeploymentPolicy();
-
-                    AbstractClusterMonitor monitor;
-
-                    if (clusterRemovedEvent.isLbCluster()) {
-                        DeploymentPolicy depPolicy = PolicyManager.getInstance().
-                                getDeploymentPolicy(deploymentPolicy);
-                        if (depPolicy != null) {
-                            List<NetworkPartitionLbHolder> lbHolders = PartitionManager.getInstance()
-                                    .getNetworkPartitionLbHolders(depPolicy);
-
-                            for (NetworkPartitionLbHolder networkPartitionLbHolder : lbHolders) {
-                                // removes lb cluster ids
-                                boolean isRemoved = networkPartitionLbHolder.removeLbClusterId(clusterId);
-                                if (isRemoved) {
-                                    log.info("Removed the lb cluster [id]:"
-                                            + clusterId
-                                            + " reference from Network Partition [id]: "
-                                            + networkPartitionLbHolder
-                                            .getNetworkPartitionId());
-
-                                }
-                                if (log.isDebugEnabled()) {
-                                    log.debug(networkPartitionLbHolder);
-                                }
-
-                            }
-                        }
-                        monitor = AutoscalerContext.getInstance()
-                                .removeLbMonitor(clusterId);
-
-                    } else {
-                        monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance()
-                                .removeMonitor(clusterId);
-                    }
-
-                    // runTerminateAllRule(monitor);
-                    if (monitor != null) {
-                        monitor.destroy();
-                        log.info(String.format("Cluster monitor has been removed successfully: [cluster] %s ",
-                                clusterId));
-                    }
-                } catch (Exception e) {
-                    log.error("Error processing event", e);
-                } finally {
-                    //TopologyManager.releaseReadLock();
-                    TopologyManager.releaseReadLockForCluster(clusterRemovedEvent.getServiceName(),
-                            clusterRemovedEvent.getClusterId());
-                }
-            }
-
-        });
-
         topologyEventReceiver.addEventListener(new MemberStartedEventListener() {
             @Override
             protected void onEvent(Event event) {
@@ -866,176 +528,75 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
         });
 
         topologyEventReceiver.addEventListener(new MemberTerminatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                MemberTerminatedEvent memberTerminatedEvent = null;
-                try {
-                    //TopologyManager.acquireReadLock();
-
-                    memberTerminatedEvent = (MemberTerminatedEvent) event;
-                    String networkPartitionId = memberTerminatedEvent.getNetworkPartitionId();
-                    String clusterId = memberTerminatedEvent.getClusterId();
-                    String partitionId = memberTerminatedEvent.getPartitionId();
-                    AbstractClusterMonitor monitor;
-
-                    TopologyManager.acquireReadLockForCluster(memberTerminatedEvent.getServiceName(),
-                            memberTerminatedEvent.getClusterId());
-
-                    if (AutoscalerContext.getInstance().monitorExist(clusterId)) {
-                        monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId);
-                    } else {
-                        //This is LB member
-                        monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
-                    }
-
-                    NetworkPartitionContext networkPartitionContext = monitor.
-                            getNetworkPartitionCtxt(networkPartitionId);
-
-                    PartitionContext partitionContext = networkPartitionContext.
-                            getPartitionCtxt(partitionId);
-                    String memberId = memberTerminatedEvent.getMemberId();
-                    partitionContext.removeMemberStatsContext(memberId);
-
-
-                    if (partitionContext.removeTerminationPendingMember(memberId)) {
-                        if (log.isDebugEnabled()) {
-                            log.debug(String.format("Member is removed from termination pending " +
-                                    "members list: [member] %s", memberId));
-                        }
-                    } else if (partitionContext.removePendingMember(memberId)) {
-                        if (log.isDebugEnabled()) {
-                            log.debug(String.format("Member is removed from pending members list: " +
-                                    "[member] %s", memberId));
-                        }
-                    } else if (partitionContext.removeActiveMemberById(memberId)) {
-                        log.warn(String.format("Member is in the wrong list and it is removed " +
-                                "from active members list", memberId));
-                    } else {
-                        log.warn(String.format("Member is not available in any of the list " +
-                                "active, pending and termination pending", memberId));
-                    }
-
-                    if (log.isInfoEnabled()) {
-                        log.info(String.format("Member stat context has been removed " +
-                                "               successfully: [member] %s", memberId));
-                    }
-                    //Checking whether the cluster state can be changed either from in_active to created/terminating to terminated
-                    StatusChecker.getInstance().onMemberTermination(clusterId);
-
-//                partitionContext.decrementCurrentActiveMemberCount(1);
-
-
-                } catch (Exception e) {
-                    log.error("Error processing event", e);
-                } finally {
-                    //TopologyManager.releaseReadLock();
-                    TopologyManager.releaseReadLockForCluster(memberTerminatedEvent.getServiceName(),
-                            memberTerminatedEvent.getClusterId());
-                }
-            }
-
+        	@Override
+        	protected void onEvent(Event event) {
+        		try {
+        			MemberTerminatedEvent memberTerminatedEvent = (MemberTerminatedEvent) event;
+        			String clusterId = memberTerminatedEvent.getClusterId();
+        			AbstractClusterMonitor monitor;
+        			AutoscalerContext asCtx = AutoscalerContext.getInstance();
+        			monitor = asCtx.getClusterMonitor(clusterId);
+        			if (null == monitor) {
+        				if (log.isDebugEnabled()) {
+        					log.debug(String.format("A cluster monitor is not found in autoscaler context "
+        							+ "[cluster] %s", clusterId));
+        				}
+        				return;
+        			}
+        			monitor.handleMemberTerminatedEvent(memberTerminatedEvent);
+        		} catch (Exception e) {
+        			String msg = "Error processing event " + e.getLocalizedMessage();
+        			log.error(msg, e);
+        		}
+        	}
         });
 
         topologyEventReceiver.addEventListener(new MemberActivatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event;
-
-                //TopologyManager.acquireReadLock();
-                TopologyManager.acquireReadLockForCluster(memberActivatedEvent.getServiceName(),
-                        memberActivatedEvent.getClusterId());
-
-                try {
-
-                    String networkPartitionId = memberActivatedEvent.getNetworkPartitionId();
-                    String clusterId = memberActivatedEvent.getClusterId();
-                    String partitionId = memberActivatedEvent.getPartitionId();
-                    String memberId = memberActivatedEvent.getMemberId();
-
-                    AbstractClusterMonitor monitor;
-
-                    if (AutoscalerContext.getInstance().monitorExist(clusterId)) {
-                        monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId);
-                    } else {
-                        //This is LB member
-                        monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
-                    }
-
-                    NetworkPartitionContext networkPartitionContext = monitor.
-                            getNetworkPartitionCtxt(networkPartitionId);
-
-                    PartitionContext partitionContext = networkPartitionContext.
-                            getPartitionCtxt(partitionId);
-
-                    partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
-                    // TODO starting the pending clusters which are waiting for this member activation in a cluster
-
-
-                    if (log.isInfoEnabled()) {
-                        log.info(String.format("Member stat context has been added " +
-                                "successfully: [member] %s", memberId));
-                    }
-//                partitionContext.incrementCurrentActiveMemberCount(1);
-                    partitionContext.movePendingMemberToActiveMembers(memberId);
-                    //triggering the status checker
-                    StatusChecker.getInstance().onMemberStatusChange(memberActivatedEvent.getClusterId());
-
-                } catch (Exception e) {
-                    log.error("Error processing event", e);
-                } finally {
-                    //TopologyManager.releaseReadLock();
-                    TopologyManager.releaseReadLockForCluster(memberActivatedEvent.getServiceName(),
-                            memberActivatedEvent.getClusterId());
-                }
-            }
+        	@Override
+        	protected void onEvent(Event event) {
+	        	try {
+		        	MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event;
+		        	String clusterId = memberActivatedEvent.getClusterId();
+		        	AbstractClusterMonitor monitor;
+		        	AutoscalerContext asCtx = AutoscalerContext.getInstance();
+		        	monitor = asCtx.getClusterMonitor(clusterId);
+		        	if (null == monitor) {
+			        	if (log.isDebugEnabled()) {
+			        		log.debug(String.format("A cluster monitor is not found in autoscaler context "
+			        				+ "[cluster] %s", clusterId));
+			        	}
+			        	return;
+		        	}
+		        	monitor.handleMemberActivatedEvent(memberActivatedEvent);
+	        	} catch (Exception e) {
+		        	String msg = "Error processing event " + e.getLocalizedMessage();
+		        	log.error(msg, e);
+	        	}
+        	}
         });
 
         topologyEventReceiver.addEventListener(new MemberMaintenanceListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                MemberMaintenanceModeEvent memberMaintenanceModeEvent = (MemberMaintenanceModeEvent) event;
-
-                //TopologyManager.acquireReadLock();
-                TopologyManager.acquireReadLockForCluster(memberMaintenanceModeEvent.getServiceName(),
-                        memberMaintenanceModeEvent.getClusterId());
-
-                try {
-
-                    String memberId = memberMaintenanceModeEvent.getMemberId();
-                    String partitionId = memberMaintenanceModeEvent.getPartitionId();
-                    String networkPartitionId = memberMaintenanceModeEvent.getNetworkPartitionId();
-
-                    PartitionContext partitionContext;
-                    String clusterId = memberMaintenanceModeEvent.getClusterId();
-                    AbstractClusterMonitor monitor;
-
-                    if (AutoscalerContext.getInstance().monitorExist(clusterId)) {
-                        monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId);
-                        partitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId).
-                                getPartitionCtxt(partitionId);
-                    } else {
-                        monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId);
-                        partitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId).
-                                getPartitionCtxt(partitionId);
-                    }
-                    partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
-                    if (log.isDebugEnabled()) {
-                        log.debug(String.format("Member has been moved as pending termination: " +
-                                "[member] %s", memberId));
-                    }
-                    partitionContext.moveActiveMemberToTerminationPendingMembers(memberId);
-
-                } catch (Exception e) {
-                    log.error("Error processing event", e);
-                } finally {
-                    //TopologyManager.releaseReadLock();
-                    TopologyManager.releaseReadLockForCluster(memberMaintenanceModeEvent.getServiceName(),
-                            memberMaintenanceModeEvent.getClusterId());
-                }
-            }
+        	@Override
+        	protected void onEvent(Event event) {
+	        	try {
+		        	MemberMaintenanceModeEvent maintenanceModeEvent = (MemberMaintenanceModeEvent) event;
+		        	String clusterId = maintenanceModeEvent.getClusterId();
+		        	AbstractClusterMonitor monitor;
+		        	AutoscalerContext asCtx = AutoscalerContext.getInstance();
+		        	monitor = asCtx.getClusterMonitor(clusterId);
+		        	if (null == monitor) {
+			        	if (log.isDebugEnabled()) {
+				        	log.debug(String.format("A cluster monitor is not found in autoscaler context "
+				        			+ "[cluster] %s", clusterId));
+			        	}
+			        	return;
+		        	}
+		        	monitor.handleMemberMaintenanceModeEvent(maintenanceModeEvent);
+	        	} catch (Exception e) {
+		        	String msg = "Error processing event " + e.getLocalizedMessage();
+		        	log.error(msg, e);
+	        	}
+        	}
         });
     }
 
@@ -1061,29 +622,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
         terminated = true;
     }
 
-    protected synchronized void startClusterMonitor(Cluster cluster) {
-        Thread th = null;
-
-        AbstractClusterMonitor monitor;
-        monitor = AutoscalerContext.getInstance().getClusterMonitor(cluster.getClusterId());
-
-        if (null == monitor) {
-            th = new Thread(new ClusterMonitorAdder(cluster));
-        }
-        if (th != null) {
-            th.start();
-            try {
-                th.join();
-            } catch (InterruptedException ignore) {
-            }
-
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Cluster monitor thread has been started successfully: "
-                                        + "[cluster] %s ", cluster.getClusterId()));
-            }
-        }
-    }
-
     protected synchronized void startApplicationMonitor(String applicationId) {
         Thread th = null;
         if (!AutoscalerContext.getInstance().appMonitorExist(applicationId)) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
deleted file mode 100644
index fb23985..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one 
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
- * KIND, either express or implied.  See the License for the 
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.autoscaler.monitor;
-
-import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
-import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
-import org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent;
-import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
-import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
-import org.apache.stratos.autoscaler.util.AutoScalerConstants;
-import org.apache.stratos.autoscaler.util.ConfUtil;
-import org.apache.stratos.messaging.domain.topology.*;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.rule.FactHandle;
-
-import java.util.Map;
-
-/**
- * Is responsible for monitoring a service cluster. This runs periodically
- * and perform minimum instance check and scaling check using the underlying
- * rules engine.
- */
-abstract public class AbstractClusterMonitor extends Monitor implements Runnable {
-
-    private static final Log log = LogFactory.getLog(AbstractClusterMonitor.class);
-    // Map<NetworkpartitionId, Network Partition Context>
-    protected Map<String, NetworkPartitionContext> networkPartitionCtxts;
-    protected DeploymentPolicy deploymentPolicy;
-    protected AutoscalePolicy autoscalePolicy;
-
-
-    protected FactHandle minCheckFactHandle;
-    protected FactHandle scaleCheckFactHandle;
-    protected FactHandle terminateDependencyFactHandle;
-    protected FactHandle terminateAllFactHandle;
-
-    protected StatefulKnowledgeSession minCheckKnowledgeSession;
-    protected StatefulKnowledgeSession scaleCheckKnowledgeSession;
-    protected StatefulKnowledgeSession terminateAllKnowledgeSession;
-    protected boolean isDestroyed;
-
-    protected String clusterId;
-    protected String serviceId;
-    protected String appId;
-
-    protected boolean hasFaultyMember = false;
-
-    protected ClusterStatus status;
-
-    //protected ParentComponentMonitor parent;
-
-    protected AutoscalerRuleEvaluator autoscalerRuleEvaluator;
-
-    // time intereval between two runs of the Monitor. Default is 90000ms.
-    protected int monitorInterval;
-
-    public AbstractClusterMonitor() {
-        readConfigurations();
-        status = ClusterStatus.Created;
-    }
-
-    private void readConfigurations() {
-
-        XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
-        monitorInterval = conf.getInt(AutoScalerConstants.AUTOSCALER_MONITOR_INTERVAL, 90000);
-        if (log.isDebugEnabled()) {
-            log.debug("Cluster Monitor task interval: " + getMonitorInterval());
-        }
-    }
-
-    @Override
-    public void run() {
-        // TODO Auto-generated method stub
-    }
-
-
-    public NetworkPartitionContext getNetworkPartitionCtxt(Member member) {
-        log.info("***** getNetworkPartitionCtxt " + member.getNetworkPartitionId());
-        String networkPartitionId = member.getNetworkPartitionId();
-        if (networkPartitionCtxts.containsKey(networkPartitionId)) {
-            log.info("returnnig network partition context " + networkPartitionCtxts.get(networkPartitionId));
-            return networkPartitionCtxts.get(networkPartitionId);
-        }
-        log.info("returning null getNetworkPartitionCtxt");
-        return null;
-    }
-
-    public String getPartitionOfMember(String memberId) {
-        for (Service service : TopologyManager.getTopology().getServices()) {
-            for (Cluster cluster : service.getClusters()) {
-                if (cluster.memberExists(memberId)) {
-                    return cluster.getMember(memberId).getPartitionId();
-                }
-            }
-        }
-        return null;
-    }
-
-    public void destroy() {
-        minCheckKnowledgeSession.dispose();
-        scaleCheckKnowledgeSession.dispose();
-        terminateAllKnowledgeSession.dispose();
-        setDestroyed(true);
-        if (log.isDebugEnabled()) {
-            log.debug("Cluster Monitor Drools session has been disposed. " + this.toString());
-        }
-    }
-
-    public abstract void terminateAllMembers ();
-
-    public boolean isDestroyed() {
-        return isDestroyed;
-    }
-
-    public void setDestroyed(boolean isDestroyed) {
-        this.isDestroyed = isDestroyed;
-    }
-
-    public String getServiceId() {
-        return serviceId;
-    }
-
-    public void setServiceId(String serviceId) {
-        this.serviceId = serviceId;
-    }
-
-    public DeploymentPolicy getDeploymentPolicy() {
-        return deploymentPolicy;
-    }
-
-    public void setDeploymentPolicy(DeploymentPolicy deploymentPolicy) {
-        this.deploymentPolicy = deploymentPolicy;
-    }
-
-    public AutoscalePolicy getAutoscalePolicy() {
-        return autoscalePolicy;
-    }
-
-    public void setAutoscalePolicy(AutoscalePolicy autoscalePolicy) {
-        this.autoscalePolicy = autoscalePolicy;
-    }
-
-    public String getClusterId() {
-        return clusterId;
-    }
-
-    public void setClusterId(String clusterId) {
-        this.clusterId = clusterId;
-    }
-
-    public String getAppId() {
-        return appId;
-    }
-
-    public void setAppId(String appId) {
-        this.appId = appId;
-    }
-
-    public Map<String, NetworkPartitionContext> getNetworkPartitionCtxts() {
-        return networkPartitionCtxts;
-    }
-
-    public NetworkPartitionContext getNetworkPartitionCtxt(String networkPartitionId) {
-        return networkPartitionCtxts.get(networkPartitionId);
-    }
-
-    public void setPartitionCtxt(Map<String, NetworkPartitionContext> partitionCtxt) {
-        this.networkPartitionCtxts = partitionCtxt;
-    }
-
-    public boolean partitionCtxtAvailable(String partitionId) {
-        return networkPartitionCtxts.containsKey(partitionId);
-    }
-
-    public void addNetworkPartitionCtxt(NetworkPartitionContext ctxt) {
-        this.networkPartitionCtxts.put(ctxt.getId(), ctxt);
-    }
-
-    public NetworkPartitionContext getPartitionCtxt(String id) {
-        return this.networkPartitionCtxts.get(id);
-    }
-
-    public StatefulKnowledgeSession getMinCheckKnowledgeSession() {
-        return minCheckKnowledgeSession;
-    }
-
-    public void setMinCheckKnowledgeSession(StatefulKnowledgeSession minCheckKnowledgeSession) {
-        this.minCheckKnowledgeSession = minCheckKnowledgeSession;
-    }
-
-    public FactHandle getMinCheckFactHandle() {
-        return minCheckFactHandle;
-    }
-
-    public void setMinCheckFactHandle(FactHandle minCheckFactHandle) {
-        this.minCheckFactHandle = minCheckFactHandle;
-    }
-
-
-    public int getMonitorInterval() {
-        return monitorInterval;
-    }
-
-    public ClusterStatus getStatus() {
-        return status;
-    }
-
-    public void setStatus(ClusterStatus status) {
-
-        //if(this.status != status) {
-            this.status = status;
-            /**
-             * notifying the parent monitor about the state change
-             * If the cluster in_active and if it is a in_dependent cluster,
-             * then won't send the notification to parent.
-             */
-            if (status == ClusterStatus.Inactive && !this.hasDependent) {
-                log.info("[Cluster] " + clusterId + "is not notifying the parent, " +
-                        "since it is identified as the independent unit");
-
-            } else if (status == ClusterStatus.Terminating) {
-                // notify parent
-                log.info("[Cluster] " + clusterId + " is not notifying the parent, " +
-                        "since it is in Terminating State");
-
-            } else {
-                MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, this.status, this.clusterId);
-            }
-        //}
-
-    }
-
-    @Override
-    public void onChildEvent(MonitorStatusEvent statusEvent) {
-
-    }
-
-    @Override
-    public void onEvent(MonitorTerminateAllEvent terminateAllEvent) {
-
-    }
-
-    @Override
-    public void onEvent(MonitorScalingEvent scalingEvent) {
-
-    }
-
-    public boolean isHasFaultyMember() {
-        return hasFaultyMember;
-    }
-
-    public void setHasFaultyMember(boolean hasFaultyMember) {
-        this.hasFaultyMember = hasFaultyMember;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
index 5938077..bd36091 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
@@ -31,6 +31,8 @@ import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublish
 import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
 import org.apache.stratos.messaging.domain.applications.ParentComponent;
+import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory;
+import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 
 import java.util.HashMap;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/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 7f3de58..66891d0 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
@@ -18,48 +18,32 @@
  */
 package org.apache.stratos.autoscaler.monitor.application;
 
+import java.util.Map;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.AutoscalerContext;
-import org.apache.stratos.autoscaler.MemberStatsContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.PartitionContext;
-import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
-import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationContext;
+import org.apache.stratos.autoscaler.applications.dependency.context.ClusterContext;
+import org.apache.stratos.autoscaler.applications.dependency.context.GroupContext;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.PolicyValidationException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
-import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationContext;
-import org.apache.stratos.autoscaler.applications.dependency.context.ClusterContext;
-import org.apache.stratos.autoscaler.applications.dependency.context.GroupContext;
-import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor;
-import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
-import org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationContext;
-import org.apache.stratos.autoscaler.grouping.dependency.context.ClusterContext;
-import org.apache.stratos.autoscaler.grouping.dependency.context.GroupContext;
 import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor;
 import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.group.GroupMonitor;
-import org.apache.stratos.autoscaler.partition.PartitionGroup;
-import org.apache.stratos.autoscaler.policy.PolicyManager;
-import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
-import org.apache.stratos.autoscaler.status.checker.StatusChecker;
-import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
-import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.cloud.controller.stub.pojo.Property;
 import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.Group;
-import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.domain.topology.Topology;
 import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-import org.apache.stratos.messaging.util.Constants;
-
-import java.util.Map;
 
 /**
  * Factory class to get the Monitors.


[3/3] git commit: Merge branch 'docker-grouping-merge' of https://git-wip-us.apache.org/repos/asf/stratos into docker-grouping-merge

Posted by ra...@apache.org.
Merge branch 'docker-grouping-merge' of https://git-wip-us.apache.org/repos/asf/stratos into docker-grouping-merge


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

Branch: refs/heads/docker-grouping-merge
Commit: 21ed21233d9a4259322c87bce895693456cb134b
Parents: 8b66cba 71e8ac2
Author: R-Rajkumar <rr...@gmail.com>
Authored: Mon Nov 3 15:22:08 2014 +0530
Committer: R-Rajkumar <rr...@gmail.com>
Committed: Mon Nov 3 15:22:08 2014 +0530

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        |  29 -----
 .../internal/CloudControllerDSComponent.java    |   9 +-
 .../controller/topology/TopologyBuilder.java    | 109 -------------------
 .../topology/TopologyEventPublisher.java        |   9 --
 4 files changed, 3 insertions(+), 153 deletions(-)
----------------------------------------------------------------------