You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/12/19 12:23:28 UTC

[2/5] stratos git commit: Removed kubernetes cluster monitors/contexts and renamed vm cluster monitor to cluster monitor

http://git-wip-us.apache.org/repos/asf/stratos/blob/d9c323a2/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
deleted file mode 100644
index 1ef3a58..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ /dev/null
@@ -1,1246 +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.cluster;
-
-import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.client.CloudControllerClient;
-import org.apache.stratos.autoscaler.context.InstanceContext;
-import org.apache.stratos.autoscaler.context.cluster.ClusterContextFactory;
-import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
-import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
-import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
-import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
-import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
-import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
-import org.apache.stratos.autoscaler.event.publisher.InstanceNotificationPublisher;
-import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
-import org.apache.stratos.autoscaler.exception.cartridge.TerminationException;
-import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
-import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
-import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
-import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
-import org.apache.stratos.autoscaler.monitor.events.ScalingOverMaxEvent;
-import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
-import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
-import org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusActiveProcessor;
-import org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusInactiveProcessor;
-import org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusTerminatedProcessor;
-import org.apache.stratos.autoscaler.util.AutoScalerConstants;
-import org.apache.stratos.autoscaler.util.AutoscalerUtil;
-import org.apache.stratos.autoscaler.util.ConfUtil;
-import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
-import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
-import org.apache.stratos.common.Properties;
-import org.apache.stratos.common.Property;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
-import org.apache.stratos.messaging.domain.applications.GroupStatus;
-import org.apache.stratos.messaging.domain.instance.ClusterInstance;
-import org.apache.stratos.messaging.domain.instance.GroupInstance;
-import org.apache.stratos.messaging.domain.instance.Instance;
-import org.apache.stratos.messaging.domain.topology.Cluster;
-import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.Member;
-import org.apache.stratos.messaging.domain.topology.Service;
-import org.apache.stratos.messaging.event.health.stat.*;
-import org.apache.stratos.messaging.event.topology.*;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-
-import java.util.*;
-
-/**
- * Is responsible for monitoring a service cluster. This runs periodically
- * and perform minimum instance check and scaling check using the underlying
- * rules engine.
- */
-public class VMClusterMonitor extends AbstractClusterMonitor {
-
-    private static final Log log = LogFactory.getLog(VMClusterMonitor.class);
-    private Map<String, ClusterLevelNetworkPartitionContext> networkPartitionIdToClusterLevelNetworkPartitionCtxts;
-    private boolean hasPrimary;
-    private float scalingFactorBasedOnDependencies = 1.0f;
-
-
-    protected VMClusterMonitor(Cluster cluster, boolean hasScalingDependents, boolean groupScalingEnabledSubtree) {
-        super(cluster, hasScalingDependents, groupScalingEnabledSubtree);
-        this.networkPartitionIdToClusterLevelNetworkPartitionCtxts = new HashMap<String, ClusterLevelNetworkPartitionContext>();
-        readConfigurations();
-        autoscalerRuleEvaluator = new AutoscalerRuleEvaluator();
-        autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE);
-        autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.VM_SCALE_CHECK_DROOL_FILE);
-        autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.VM_MIN_CHECK_DROOL_FILE);
-        autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.DEPENDENT_SCALE_CHECK_DROOL_FILE);
-
-        this.obsoleteCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession(
-                StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE);
-        this.scaleCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession(
-                StratosConstants.VM_SCALE_CHECK_DROOL_FILE);
-        this.minCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession(
-                StratosConstants.VM_MIN_CHECK_DROOL_FILE);
-        this.dependentScaleCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession(
-                StratosConstants.DEPENDENT_SCALE_CHECK_DROOL_FILE);
-    }
-
-    private static void terminateMember(String memberId) {
-        try {
-            CloudControllerClient.getInstance().terminate(memberId);
-
-        } catch (TerminationException e) {
-            log.error("Unable to terminate member [member id ] " + memberId, e);
-        }
-    }
-
-    private static void createClusterInstance(String serviceType, String clusterId, String alias,
-                                              String instanceId, String partitionId, String networkPartitionId) {
-        CloudControllerClient.getInstance().createClusterInstance(serviceType, clusterId, alias,
-                instanceId, partitionId, networkPartitionId);
-    }
-
-    public void addClusterLevelNWPartitionContext(ClusterLevelNetworkPartitionContext clusterLevelNWPartitionCtxt) {
-        networkPartitionIdToClusterLevelNetworkPartitionCtxts.put(clusterLevelNWPartitionCtxt.getId(), clusterLevelNWPartitionCtxt);
-    }
-
-    public ClusterLevelNetworkPartitionContext getClusterLevelNWPartitionContext(String nwPartitionId) {
-        return networkPartitionIdToClusterLevelNetworkPartitionCtxts.get(nwPartitionId);
-    }
-
-    @Override
-    public void handleAverageLoadAverageEvent(
-            AverageLoadAverageEvent averageLoadAverageEvent) {
-
-        String networkPartitionId = averageLoadAverageEvent.getNetworkPartitionId();
-        String clusterId = averageLoadAverageEvent.getClusterId();
-        String instanceId = averageLoadAverageEvent.getInstanceId();
-        float value = averageLoadAverageEvent.getValue();
-
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Avg load avg event: [cluster] %s [network-partition] %s [value] %s",
-                    clusterId, networkPartitionId, value));
-        }
-
-        ClusterInstanceContext clusterInstanceContext = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        if (null != clusterInstanceContext) {
-            clusterInstanceContext.setAverageLoadAverage(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void run() {
-        while (!isDestroyed()) {
-            try {
-                if (log.isDebugEnabled()) {
-                    log.debug("Cluster monitor is running.. " + this.toString());
-                }
-                monitor();
-            } catch (Exception e) {
-                log.error("Cluster monitor: Monitor failed." + this.toString(), e);
-            }
-            try {
-                Thread.sleep(getMonitorIntervalMilliseconds());
-            } catch (InterruptedException ignore) {
-            }
-        }
-
-
-    }
-
-    private boolean isPrimaryMember(MemberContext memberContext) {
-        Properties props = AutoscalerUtil.toCommonProperties(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;
-    }
-
-    public synchronized void monitor() {
-
-        for (ClusterLevelNetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts()) {
-
-            final Collection<InstanceContext> clusterInstanceContexts = networkPartitionContext.
-                    getInstanceIdToInstanceContextMap().values();
-
-            for (final InstanceContext pInstanceContext : clusterInstanceContexts) {
-                final ClusterInstanceContext instanceContext = (ClusterInstanceContext) pInstanceContext;
-                ClusterInstance instance = (ClusterInstance) this.instanceIdToInstanceMap.
-                        get(instanceContext.getId());
-
-                if ((instance.getStatus().getCode() <= ClusterStatus.Active.getCode()) ||
-                        (instance.getStatus() == ClusterStatus.Inactive && !hasStartupDependents)
-                                && !this.hasFaultyMember) {
-
-                    Runnable monitoringRunnable = new Runnable() {
-                        @Override
-                        public void run() {
-
-                            if (log.isDebugEnabled()) {
-                                log.debug("Monitor is running for [cluster] : " + getClusterId());
-                            }
-                            // store primary members in the cluster instance context
-                            List<String> primaryMemberListInClusterInstance = new ArrayList<String>();
-
-                            for (ClusterLevelPartitionContext partitionContext :
-                                                            instanceContext.getPartitionCtxts()) {
-
-                                // get active primary members in this cluster instance context
-                                for (MemberContext memberContext : partitionContext.getActiveMembers()) {
-                                    if (isPrimaryMember(memberContext)) {
-                                        primaryMemberListInClusterInstance.add(memberContext.getMemberId());
-                                    }
-                                }
-
-                                // get pending primary members in this cluster instance context
-                                for (MemberContext memberContext : partitionContext.getPendingMembers()) {
-                                    if (isPrimaryMember(memberContext)) {
-                                        primaryMemberListInClusterInstance.add(memberContext.getMemberId());
-                                    }
-                                }
-
-                                obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluate(
-                                        getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, partitionContext);
-
-                            }
-
-                            getScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInClusterInstance);
-                            getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
-                            getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
-                            //FIXME when parent chosen the partition
-                            String paritionAlgo = instanceContext.getPartitionAlgorithm();
-
-                            getMinCheckKnowledgeSession().setGlobal("algorithmName",
-                                    paritionAlgo);
-
-                            if (log.isDebugEnabled()) {
-                                log.debug(String.format("Running minimum check for cluster instance %s ",
-                                        instanceContext.getId() + " for the cluster: " + clusterId));
-                            }
-
-                            minCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getMinCheckKnowledgeSession(),
-                                    minCheckFactHandle, instanceContext);
-
-
-                            //checking the status of the cluster
-                            boolean rifReset = instanceContext.isRifReset();
-                            boolean memoryConsumptionReset = instanceContext.isMemoryConsumptionReset();
-                            boolean loadAverageReset = instanceContext.isLoadAverageReset();
-                            boolean averageRequestServedPerInstanceReset
-                                    = instanceContext.isAverageRequestServedPerInstanceReset();
-
-                            if (log.isDebugEnabled()) {
-                                log.debug("Execution point of scaling Rule, [Is rif Reset] : " + rifReset
-                                        + " [Is memoryConsumption Reset] : " + memoryConsumptionReset
-                                        + " [Is loadAverage Reset] : " + loadAverageReset);
-                            }
-
-                            if (rifReset || memoryConsumptionReset || loadAverageReset) {
-
-                                log.info("Executing scaling rule as statistics have been reset");
-                                VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
-
-                                getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
-                                getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
-                                getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
-                                getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
-                                getScaleCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
-                                getScaleCheckKnowledgeSession().setGlobal("algorithmName", paritionAlgo);
-                                getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy",
-                                        vmClusterContext.getAutoscalePolicy());
-                                getScaleCheckKnowledgeSession().setGlobal("arspiReset",
-                                        averageRequestServedPerInstanceReset);
-                                getScaleCheckKnowledgeSession().setGlobal("primaryMembers",
-                                        primaryMemberListInClusterInstance);
-
-                                if (log.isDebugEnabled()) {
-                                    log.debug(String.format("Running scale check for [cluster instance context] %s ",
-                                            instanceContext.getId()));
-                                    log.debug(" Primary members : " + primaryMemberListInClusterInstance);
-                                }
-
-                                scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getScaleCheckKnowledgeSession()
-                                        , scaleCheckFactHandle, instanceContext);
-
-                                instanceContext.setRifReset(false);
-                                instanceContext.setMemoryConsumptionReset(false);
-                                instanceContext.setLoadAverageReset(false);
-                            } else if (log.isDebugEnabled()) {
-                                log.debug(String.format("Scale rule will not run since the LB statistics have not " +
-                                                "received before this cycle for [cluster instance context] %s [cluster] %s",
-                                        instanceContext.getId(), clusterId));
-                            }
-
-                        }
-                    };
-                    monitoringRunnable.run();
-                }
-
-                for (final ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
-                    Runnable monitoringRunnable = new Runnable() {
-                        @Override
-                        public void run() {
-                            obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluate(
-                                    getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, partitionContext);
-                        }
-                    };
-
-                    monitoringRunnable.run();
-
-                }
-
-            }
-        }
-    }
-
-    @Override
-    protected void readConfigurations() {
-        XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
-        int monitorInterval = conf.getInt(AutoScalerConstants.VMService_Cluster_MONITOR_INTERVAL, 90000);
-        setMonitorIntervalMilliseconds(monitorInterval);
-        if (log.isDebugEnabled()) {
-            log.debug("VMClusterMonitor task interval set to : " + getMonitorIntervalMilliseconds());
-        }
-    }
-
-    @Override
-    public void destroy() {
-        getMinCheckKnowledgeSession().dispose();
-        getObsoleteCheckKnowledgeSession().dispose();
-        getScaleCheckKnowledgeSession().dispose();
-        setDestroyed(true);
-        stopScheduler();
-        if (log.isDebugEnabled()) {
-            log.debug("VMClusterMonitor Drools session has been disposed. " + this.toString());
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "VMClusterMonitor [clusterId=" + getClusterId() +
-                ", hasPrimary=" + hasPrimary + " ]";
-    }
-
-    public boolean isHasPrimary() {
-        return hasPrimary;
-    }
-
-    public void setHasPrimary(boolean hasPrimary) {
-        this.hasPrimary = hasPrimary;
-    }
-
-    @Override
-    public void onChildStatusEvent(MonitorStatusEvent statusEvent) {
-
-    }
-
-    @Override
-    public void onParentStatusEvent(MonitorStatusEvent statusEvent) {
-        String instanceId = statusEvent.getInstanceId();
-        // send the ClusterTerminating event
-        if (statusEvent.getStatus() == GroupStatus.Terminating || statusEvent.getStatus() ==
-                ApplicationStatus.Terminating) {
-            if (log.isInfoEnabled()) {
-                log.info("Publishing Cluster terminating event for [application] " + appId +
-                        " [cluster] " + this.getClusterId() + " [instance] " + instanceId);
-            }
-            ClusterStatusEventPublisher.sendClusterTerminatingEvent(getAppId(), getServiceId(), getClusterId(), instanceId);
-        }
-    }
-
-    @Override
-    public void onChildScalingEvent(ScalingEvent scalingEvent) {
-
-    }
-
-    @Override
-    public void onChildScalingOverMaxEvent(ScalingOverMaxEvent scalingOverMaxEvent) {
-
-    }
-
-    @Override
-    public void onParentScalingEvent(ScalingEvent scalingEvent) {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Parent scaling event received to [cluster]: " + this.getClusterId()
-                    + ", [network partition]: " + scalingEvent.getNetworkPartitionId()
-                    + ", [event] " + scalingEvent.getId() + ", [group instance] " + scalingEvent.getInstanceId());
-        }
-
-        this.scalingFactorBasedOnDependencies = scalingEvent.getFactor();
-        VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
-        String instanceId = scalingEvent.getInstanceId();
-
-        ClusterInstanceContext clusterInstanceContext =
-                getClusterInstanceContext(scalingEvent.getNetworkPartitionId(), instanceId);
-
-
-        // store primary members in the cluster instance context
-        List<String> primaryMemberListInClusterInstance = new ArrayList<String>();
-
-        for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts()) {
-
-            // get active primary members in this cluster instance context
-            for (MemberContext memberContext : partitionContext.getActiveMembers()) {
-                if (isPrimaryMember(memberContext)) {
-                    primaryMemberListInClusterInstance.add(memberContext.getMemberId());
-                }
-            }
-
-            // get pending primary members in this cluster instance context
-            for (MemberContext memberContext : partitionContext.getPendingMembers()) {
-                if (isPrimaryMember(memberContext)) {
-                    primaryMemberListInClusterInstance.add(memberContext.getMemberId());
-                }
-            }
-        }
-
-
-        //TODO get min instance count from instance context
-        float requiredInstanceCount = clusterInstanceContext.getMinInstanceCount() * scalingFactorBasedOnDependencies;
-        int roundedRequiredInstanceCount = getRoundedInstanceCount(requiredInstanceCount,
-                vmClusterContext.getAutoscalePolicy().getInstanceRoundingFactor());
-        clusterInstanceContext.setRequiredInstanceCountBasedOnDependencies(roundedRequiredInstanceCount);
-
-        getDependentScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
-        getDependentScaleCheckKnowledgeSession().setGlobal("roundedRequiredInstanceCount", roundedRequiredInstanceCount);
-        getDependentScaleCheckKnowledgeSession().setGlobal("algorithmName", clusterInstanceContext.getPartitionAlgorithm());
-        getDependentScaleCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
-
-        dependentScaleCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getDependentScaleCheckKnowledgeSession()
-                , dependentScaleCheckFactHandle, clusterInstanceContext);
-
-    }
-
-    public void sendClusterScalingEvent(String networkPartitionId, String instanceId, float factor) {
-
-        MonitorStatusEventBuilder.handleClusterScalingEvent(this.parent, networkPartitionId, instanceId, factor, this.id);
-    }
-
-    public void sendScalingOverMaxEvent(String networkPartitionId, String instanceId) {
-
-        MonitorStatusEventBuilder.handleScalingOverMaxEvent(this.parent, networkPartitionId, instanceId,
-                this.id);
-    }
-
-    @Override
-    public void handleGradientOfLoadAverageEvent(
-            GradientOfLoadAverageEvent gradientOfLoadAverageEvent) {
-
-        String networkPartitionId = gradientOfLoadAverageEvent.getNetworkPartitionId();
-        String clusterId = gradientOfLoadAverageEvent.getClusterId();
-        String instanceId = gradientOfLoadAverageEvent.getInstanceId();
-        float value = gradientOfLoadAverageEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Grad of load avg event: [cluster] %s [network-partition] %s [value] %s",
-                    clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setLoadAverageGradient(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleSecondDerivativeOfLoadAverageEvent(
-            SecondDerivativeOfLoadAverageEvent secondDerivativeOfLoadAverageEvent) {
-
-        String networkPartitionId = secondDerivativeOfLoadAverageEvent.getNetworkPartitionId();
-        String clusterId = secondDerivativeOfLoadAverageEvent.getClusterId();
-        String instanceId = secondDerivativeOfLoadAverageEvent.getInstanceId();
-        float value = secondDerivativeOfLoadAverageEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Second Derivation of load avg event: [cluster] %s "
-                    + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setLoadAverageSecondDerivative(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleAverageMemoryConsumptionEvent(
-            AverageMemoryConsumptionEvent averageMemoryConsumptionEvent) {
-
-        String networkPartitionId = averageMemoryConsumptionEvent.getNetworkPartitionId();
-        String clusterId = averageMemoryConsumptionEvent.getClusterId();
-        String instanceId = averageMemoryConsumptionEvent.getInstanceId();
-        float value = averageMemoryConsumptionEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Avg Memory Consumption event: [cluster] %s [network-partition] %s "
-                    + "[value] %s", clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setAverageMemoryConsumption(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String
-                        .format("Network partition context is not available for :"
-                                + " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleGradientOfMemoryConsumptionEvent(
-            GradientOfMemoryConsumptionEvent gradientOfMemoryConsumptionEvent) {
-
-        String networkPartitionId = gradientOfMemoryConsumptionEvent.getNetworkPartitionId();
-        String clusterId = gradientOfMemoryConsumptionEvent.getClusterId();
-        String instanceId = gradientOfMemoryConsumptionEvent.getInstanceId();
-        float value = gradientOfMemoryConsumptionEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Grad of Memory Consumption event: [cluster] %s "
-                    + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setMemoryConsumptionGradient(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleSecondDerivativeOfMemoryConsumptionEvent(
-            SecondDerivativeOfMemoryConsumptionEvent secondDerivativeOfMemoryConsumptionEvent) {
-
-        String networkPartitionId = secondDerivativeOfMemoryConsumptionEvent.getNetworkPartitionId();
-        String clusterId = secondDerivativeOfMemoryConsumptionEvent.getClusterId();
-        String instanceId = secondDerivativeOfMemoryConsumptionEvent.getInstanceId();
-        float value = secondDerivativeOfMemoryConsumptionEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Second Derivation of Memory Consumption event: [cluster] %s "
-                    + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setMemoryConsumptionSecondDerivative(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    public void handleAverageRequestsServingCapabilityEvent(
-            AverageRequestsServingCapabilityEvent averageRequestsServingCapabilityEvent) {
-
-        String clusterId = averageRequestsServingCapabilityEvent.getClusterId();
-        String instanceId = averageRequestsServingCapabilityEvent.getInstanceId();
-        String networkPartitionId = averageRequestsServingCapabilityEvent.getNetworkPartitionId();
-        Float floatValue = averageRequestsServingCapabilityEvent.getValue();
-
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Average Requests Served per Instance event: [cluster] %s [network-partition] %s [value] %s",
-                    clusterId, networkPartitionId, floatValue));
-        }
-
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setAverageRequestsServedPerInstance(floatValue);
-
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-
-    }
-
-    @Override
-    public void handleAverageRequestsInFlightEvent(
-            AverageRequestsInFlightEvent averageRequestsInFlightEvent) {
-
-        String networkPartitionId = averageRequestsInFlightEvent.getNetworkPartitionId();
-        String clusterId = averageRequestsInFlightEvent.getClusterId();
-        String instanceId = averageRequestsInFlightEvent.getInstanceId();
-        Float servedCount = averageRequestsInFlightEvent.getServedCount();
-        Float activeInstances = averageRequestsInFlightEvent.getActiveInstances();
-        Float requestsServedPerInstance = servedCount / activeInstances;
-        if (requestsServedPerInstance.isInfinite()) {
-            requestsServedPerInstance = 0f;
-        }
-        float value = averageRequestsInFlightEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Average Rif event: [cluster] %s [network-partition] %s [value] %s",
-                    clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setAverageRequestsInFlight(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleGradientOfRequestsInFlightEvent(
-            GradientOfRequestsInFlightEvent gradientOfRequestsInFlightEvent) {
-
-        String networkPartitionId = gradientOfRequestsInFlightEvent.getNetworkPartitionId();
-        String clusterId = gradientOfRequestsInFlightEvent.getClusterId();
-        String instanceId = gradientOfRequestsInFlightEvent.getInstanceId();
-        float value = gradientOfRequestsInFlightEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Gradient of Rif event: [cluster] %s [network-partition] %s [value] %s",
-                    clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setRequestsInFlightGradient(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleSecondDerivativeOfRequestsInFlightEvent(
-            SecondDerivativeOfRequestsInFlightEvent secondDerivativeOfRequestsInFlightEvent) {
-
-        String networkPartitionId = secondDerivativeOfRequestsInFlightEvent.getNetworkPartitionId();
-        String clusterId = secondDerivativeOfRequestsInFlightEvent.getClusterId();
-        String instanceId = secondDerivativeOfRequestsInFlightEvent.getInstanceId();
-        float value = secondDerivativeOfRequestsInFlightEvent.getValue();
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Second derivative of Rif event: [cluster] %s "
-                    + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value));
-        }
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        if (null != clusterLevelNetworkPartitionContext) {
-            clusterLevelNetworkPartitionContext.setRequestsInFlightSecondDerivative(value);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Network partition context is not available for :" +
-                        " [network partition] %s", networkPartitionId));
-            }
-        }
-    }
-
-    @Override
-    public void handleMemberAverageMemoryConsumptionEvent(
-            MemberAverageMemoryConsumptionEvent memberAverageMemoryConsumptionEvent) {
-
-        String instanceId = memberAverageMemoryConsumptionEvent.getInstanceId();
-        String memberId = memberAverageMemoryConsumptionEvent.getMemberId();
-        Member member = getMemberByMemberId(memberId);
-        String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(
-                member.getPartitionId());
-        MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
-        if (null == memberStatsContext) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member context is not available for : [member] %s", memberId));
-            }
-            return;
-        }
-        float value = memberAverageMemoryConsumptionEvent.getValue();
-        memberStatsContext.setAverageMemoryConsumption(value);
-    }
-
-    @Override
-    public void handleMemberGradientOfMemoryConsumptionEvent(
-            MemberGradientOfMemoryConsumptionEvent memberGradientOfMemoryConsumptionEvent) {
-
-        String instanceId = memberGradientOfMemoryConsumptionEvent.getInstanceId();
-        String memberId = memberGradientOfMemoryConsumptionEvent.getMemberId();
-        Member member = getMemberByMemberId(memberId);
-        String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(
-                member.getPartitionId());
-        MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
-        if (null == memberStatsContext) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member context is not available for : [member] %s", memberId));
-            }
-            return;
-        }
-        float value = memberGradientOfMemoryConsumptionEvent.getValue();
-        memberStatsContext.setGradientOfMemoryConsumption(value);
-    }
-
-    @Override
-    public void handleMemberSecondDerivativeOfMemoryConsumptionEvent(
-            MemberSecondDerivativeOfMemoryConsumptionEvent memberSecondDerivativeOfMemoryConsumptionEvent) {
-
-    }
-
-    @Override
-    public void handleMemberAverageLoadAverageEvent(
-            MemberAverageLoadAverageEvent memberAverageLoadAverageEvent) {
-
-        String instanceId = memberAverageLoadAverageEvent.getInstanceId();
-        String memberId = memberAverageLoadAverageEvent.getMemberId();
-        Member member = getMemberByMemberId(memberId);
-        String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(
-                member.getPartitionId());
-        MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
-        if (null == memberStatsContext) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member context is not available for : [member] %s", memberId));
-            }
-            return;
-        }
-        float value = memberAverageLoadAverageEvent.getValue();
-        memberStatsContext.setAverageLoadAverage(value);
-    }
-
-    @Override
-    public void handleMemberGradientOfLoadAverageEvent(
-            MemberGradientOfLoadAverageEvent memberGradientOfLoadAverageEvent) {
-
-        String instanceId = memberGradientOfLoadAverageEvent.getInstanceId();
-        String memberId = memberGradientOfLoadAverageEvent.getMemberId();
-        Member member = getMemberByMemberId(memberId);
-        String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(
-                member.getPartitionId());
-        MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
-        if (null == memberStatsContext) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member context is not available for : [member] %s", memberId));
-            }
-            return;
-        }
-        float value = memberGradientOfLoadAverageEvent.getValue();
-        memberStatsContext.setGradientOfLoadAverage(value);
-    }
-
-    @Override
-    public void handleMemberSecondDerivativeOfLoadAverageEvent(
-            MemberSecondDerivativeOfLoadAverageEvent memberSecondDerivativeOfLoadAverageEvent) {
-
-        String instanceId = memberSecondDerivativeOfLoadAverageEvent.getInstanceId();
-        String memberId = memberSecondDerivativeOfLoadAverageEvent.getMemberId();
-        Member member = getMemberByMemberId(memberId);
-        String networkPartitionId = getNetworkPartitionIdByMemberId(memberId);
-
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(
-                member.getPartitionId());
-        MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId);
-        if (null == memberStatsContext) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member context is not available for : [member] %s", memberId));
-            }
-            return;
-        }
-        float value = memberSecondDerivativeOfLoadAverageEvent.getValue();
-        memberStatsContext.setSecondDerivativeOfLoadAverage(value);
-    }
-
-    @Override
-    public void handleMemberFaultEvent(MemberFaultEvent memberFaultEvent) {
-
-        String memberId = memberFaultEvent.getMemberId();
-        String clusterId = memberFaultEvent.getClusterId();
-        Member member = getMemberByMemberId(memberId);
-        String instanceId = memberFaultEvent.getInstanceId();
-        String networkPartitionId = memberFaultEvent.getNetworkPartitionId();
-        if (null == member) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member not found in the Topology: [member] %s", memberId));
-            }
-            return;
-        }
-        if (!member.isActive()) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member activated event has not received for the member %s. "
-                        + "Therefore ignoring" + " the member fault health stat", memberId));
-            }
-            return;
-        }
-
-        ClusterInstanceContext nwPartitionCtxt;
-        nwPartitionCtxt = getClusterInstanceContext(networkPartitionId, instanceId);
-        String partitionId = getPartitionOfMember(memberId);
-        ClusterLevelPartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId);
-        if (!partitionCtxt.activeMemberExist(memberId)) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Could not find the active member in partition context, "
-                        + "[member] %s ", memberId));
-            }
-            return;
-        }
-
-        // move member to obsolete list
-        synchronized (this) {
-            partitionCtxt.moveMemberToObsoleteList(memberId);
-        }
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Faulty member is added to obsolete list and removed from the active members list: "
-                    + "[member] %s [partition] %s [cluster] %s ", memberId, partitionId, clusterId));
-        }
-
-        ServiceReferenceHolder.getInstance().getClusterStatusProcessorChain().process(
-                ClusterStatusInactiveProcessor.class.getName(), clusterId, instanceId);
-    }
-
-    @Override
-    public void handleMemberStartedEvent(
-            MemberStartedEvent memberStartedEvent) {
-
-    }
-
-    @Override
-    public void handleMemberActivatedEvent(
-            MemberActivatedEvent memberActivatedEvent) {
-
-        String instanceId = memberActivatedEvent.getInstanceId();
-        String clusterId = memberActivatedEvent.getClusterId();
-        String networkPartitionId = memberActivatedEvent.getNetworkPartitionId();
-        String partitionId = memberActivatedEvent.getPartitionId();
-        String memberId = memberActivatedEvent.getMemberId();
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId, instanceId);
-        ClusterLevelPartitionContext clusterLevelPartitionContext;
-        clusterLevelPartitionContext = networkPartitionCtxt.getPartitionCtxt(partitionId);
-        clusterLevelPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Member stat context has been added successfully: "
-                    + "[member] %s", memberId));
-        }
-        clusterLevelPartitionContext.movePendingMemberToActiveMembers(memberId);
-        ServiceReferenceHolder.getInstance().getClusterStatusProcessorChain().process(
-                ClusterStatusActiveProcessor.class.getName(), clusterId, instanceId);
-    }
-
-    @Override
-    public void handleMemberMaintenanceModeEvent(
-            MemberMaintenanceModeEvent maintenanceModeEvent) {
-
-        String networkPartitionId = maintenanceModeEvent.getNetworkPartitionId();
-        String partitionId = maintenanceModeEvent.getPartitionId();
-        String memberId = maintenanceModeEvent.getMemberId();
-        String instanceId = maintenanceModeEvent.getInstanceId();
-        ClusterInstanceContext networkPartitionCtxt = getClusterInstanceContext(networkPartitionId,
-                instanceId);
-        ClusterLevelPartitionContext clusterMonitorPartitionContext = networkPartitionCtxt.
-                getPartitionCtxt(partitionId);
-        clusterMonitorPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
-        if (log.isDebugEnabled()) {
-            log.debug(String.format("Member has been moved as pending termination: "
-                    + "[member] %s", memberId));
-        }
-        clusterMonitorPartitionContext.moveActiveMemberToTerminationPendingMembers(memberId);
-    }
-
-    @Override
-    public void handleMemberReadyToShutdownEvent(MemberReadyToShutdownEvent memberReadyToShutdownEvent) {
-
-        ClusterInstanceContext nwPartitionCtxt;
-        String networkPartitionId = memberReadyToShutdownEvent.getNetworkPartitionId();
-        String instanceId = memberReadyToShutdownEvent.getInstanceId();
-        nwPartitionCtxt = getClusterInstanceContext(networkPartitionId, instanceId);
-
-        // start a new member in the same Partition
-        String memberId = memberReadyToShutdownEvent.getMemberId();
-        String partitionId = getPartitionOfMember(memberId);
-        ClusterLevelPartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId);
-
-        try {
-            String clusterId = memberReadyToShutdownEvent.getClusterId();
-            //move member to pending termination list
-            if (partitionCtxt.getPendingTerminationMember(memberId) != null) {
-                partitionCtxt.movePendingTerminationMemberToObsoleteMembers(memberId);
-                if (log.isDebugEnabled()) {
-                    log.debug(String.format("Member is removed from the pending termination members " +
-                            "and moved to obsolete list: [member] %s " +
-                            "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
-                }
-            } else if (partitionCtxt.getObsoleteMember(memberId) != null) {
-                if (log.isDebugEnabled()) {
-                    log.debug(String.format("Member is  in obsolete list: [member] %s " +
-                            "[partition] %s [cluster] %s ", memberId, partitionId, clusterId));
-                }
-            } //TODO else part
-
-            //when no more members are there to terminate Invoking it monitor directly
-            // to speed up the termination process
-            if (partitionCtxt.getTotalMemberCount() == 0) {
-                this.monitor();
-            }
-
-
-        } catch (Exception e) {
-            String msg = "Error processing event " + e.getLocalizedMessage();
-            log.error(msg, e);
-        }
-    }
-
-    @Override
-    public void handleMemberTerminatedEvent(
-            MemberTerminatedEvent memberTerminatedEvent) {
-
-        String networkPartitionId = memberTerminatedEvent.getNetworkPartitionId();
-        String memberId = memberTerminatedEvent.getMemberId();
-        String clusterId = memberTerminatedEvent.getClusterId();
-        String instanceId = memberTerminatedEvent.getInstanceId();
-        String partitionId = memberTerminatedEvent.getPartitionId();
-        ClusterInstanceContext clusterLevelNetworkPartitionContext = getClusterInstanceContext(
-                networkPartitionId, instanceId);
-        ClusterLevelPartitionContext clusterMonitorPartitionContext =
-                clusterLevelNetworkPartitionContext.getPartitionCtxt(partitionId);
-        clusterMonitorPartitionContext.removeMemberStatsContext(memberId);
-
-        if (clusterMonitorPartitionContext.removeTerminationPendingMember(memberId)) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member is removed from termination pending members list: "
-                        + "[member] %s", memberId));
-            }
-        } else if (clusterMonitorPartitionContext.removePendingMember(memberId)) {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Member is removed from pending members list: "
-                        + "[member] %s", memberId));
-            }
-        } else if (clusterMonitorPartitionContext.removeActiveMemberById(memberId)) {
-            log.warn(String.format("Member is in the wrong list and it is removed from "
-                    + "active members list: %s", memberId));
-        } else if (clusterMonitorPartitionContext.removeObsoleteMember(memberId)) {
-            log.warn(String.format("Obsolete member has either been terminated or its obsolete time out has expired and"
-                    + " it is removed from obsolete members list: %s", memberId));
-        } else {
-            log.warn(String.format("Member is not available in any of the list active, "
-                    + "pending and termination pending: %s", memberId));
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug(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
-        ServiceReferenceHolder.getInstance().getClusterStatusProcessorChain().process(
-                ClusterStatusTerminatedProcessor.class.getName(), clusterId, instanceId);
-    }
-
-    @Override
-    public void handleClusterRemovedEvent(
-            ClusterRemovedEvent clusterRemovedEvent) {
-
-    }
-
-    @Override
-    public void handleDynamicUpdates(Properties properties) throws InvalidArgumentException {
-
-    }
-
-    private String getNetworkPartitionIdByMemberId(String memberId) {
-        for (Service service : TopologyManager.getTopology().getServices()) {
-            for (Cluster cluster : service.getClusters()) {
-                if (cluster.memberExists(memberId)) {
-                    return cluster.getMember(memberId).getNetworkPartitionId();
-                }
-            }
-        }
-        return null;
-    }
-
-    private Member getMemberByMemberId(String memberId) {
-        try {
-            TopologyManager.acquireReadLock();
-            for (Service service : TopologyManager.getTopology().getServices()) {
-                for (Cluster cluster : service.getClusters()) {
-                    if (cluster.memberExists(memberId)) {
-                        return cluster.getMember(memberId);
-                    }
-                }
-            }
-            return null;
-        } finally {
-            TopologyManager.releaseReadLock();
-        }
-    }
-
-    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;
-    }
-
-    @Override
-    public void terminateAllMembers(final String instanceId, final String networkPartitionId) {
-        final VMClusterMonitor monitor = this;
-        Thread memberTerminator = new Thread(new Runnable() {
-            public void run() {
-
-                ClusterInstanceContext instanceContext =
-                        (ClusterInstanceContext) getAllNetworkPartitionCtxts().get(networkPartitionId)
-                                                                    .getInstanceContext(instanceId);
-                boolean allMovedToObsolete = true;
-                for (ClusterLevelPartitionContext partitionContext : instanceContext.getPartitionCtxts()) {
-                    if (log.isInfoEnabled()) {
-                        log.info("Starting to terminate all members in cluster [" + getClusterId() + "] " +
-                                "Network Partition [" + instanceContext.getNetworkPartitionId() + "], Partition [" +
-                                partitionContext.getPartitionId() + "]");
-                    }
-                    // need to terminate active, pending and obsolete members
-                    //FIXME to traverse concurrent
-                    // active members
-                    List<String> activeMembers = new ArrayList<String>();
-                    Iterator<MemberContext> iterator = partitionContext.getActiveMembers().listIterator();
-                    while (iterator.hasNext()) {
-                        MemberContext activeMemberCtxt = iterator.next();
-                        activeMembers.add(activeMemberCtxt.getMemberId());
-
-                    }
-                    for (String memberId : activeMembers) {
-                        log.info("Sending instance cleanup event for the active member: [member-id] " + memberId);
-                        partitionContext.moveActiveMemberToTerminationPendingMembers(memberId);
-                        InstanceNotificationPublisher.getInstance().
-                                sendInstanceCleanupEventForMember(memberId);
-                    }
-                    Iterator<MemberContext> pendingIterator = partitionContext.getPendingMembers().listIterator();
-
-                    List<String> pendingMembers = new ArrayList<String>();
-                    while (pendingIterator.hasNext()) {
-                        MemberContext activeMemberCtxt = pendingIterator.next();
-                        pendingMembers.add(activeMemberCtxt.getMemberId());
-
-                    }
-                    for (String memberId : pendingMembers) {
-                        MemberContext pendingMemberCtxt = pendingIterator.next();
-                        // pending members
-                        String memeberId = pendingMemberCtxt.getMemberId();
-                        if (log.isDebugEnabled()) {
-                            log.debug("Moving pending member [member id] " + memeberId + " to obsolete list");
-                        }
-                        partitionContext.movePendingMemberToObsoleteMembers(memeberId);
-                    }
-                    if(partitionContext.getTotalMemberCount() == 0) {
-                        allMovedToObsolete = allMovedToObsolete && true;
-                    } else {
-                        allMovedToObsolete = false;
-                    }
-                }
-
-                if(allMovedToObsolete) {
-                    monitor.monitor();
-                }
-            }
-        }, "Member Terminator - [cluster id] " + getClusterId());
-
-        memberTerminator.start();
-    }
-
-    public Map<String, ClusterLevelNetworkPartitionContext> getAllNetworkPartitionCtxts() {
-        return ((VMClusterContext) this.clusterContext).getNetworkPartitionCtxts();
-    }
-
-    public ClusterInstanceContext getClusterInstanceContext(String networkPartitionId, String instanceId) {
-        Map<String, ClusterLevelNetworkPartitionContext> clusterLevelNetworkPartitionContextMap =
-                ((VMClusterContext) this.clusterContext).getNetworkPartitionCtxts();
-        ClusterLevelNetworkPartitionContext networkPartitionContext =
-                clusterLevelNetworkPartitionContextMap.get(networkPartitionId);
-        ClusterInstanceContext instanceContext = (ClusterInstanceContext) networkPartitionContext.
-                                                        getInstanceContext(instanceId);
-        return instanceContext;
-    }
-
-    public Collection<ClusterLevelNetworkPartitionContext> getNetworkPartitionCtxts() {
-        return ((VMClusterContext) this.clusterContext).getNetworkPartitionCtxts().values();
-    }
-
-    public void createClusterInstance(List<String> parentInstanceIds, Cluster cluster)
-            throws PolicyValidationException, PartitionValidationException {
-        for (String parentInstanceId : parentInstanceIds) {
-            createInstance(parentInstanceId, cluster);
-        }
-
-    }
-
-    public boolean createInstanceOnDemand(String instanceId) {
-        Cluster cluster = TopologyManager.getTopology().getService(this.serviceType).
-                getCluster(this.clusterId);
-        try {
-            return createInstance(instanceId, cluster);
-            //TODO exception
-        } catch (PolicyValidationException e) {
-            log.error("Error while creating the cluster instance", e);
-        } catch (PartitionValidationException e) {
-            log.error("Error while creating the cluster instance", e);
-
-        }
-        return false;
-
-    }
-
-    private boolean createInstance(String parentInstanceId, Cluster cluster)
-            throws PolicyValidationException, PartitionValidationException {
-        Instance parentMonitorInstance = this.parent.getInstance(parentInstanceId);
-        String partitionId = null;
-        if (parentMonitorInstance instanceof GroupInstance) {
-            partitionId = parentMonitorInstance.getPartitionId();
-        }
-        if (parentMonitorInstance != null) {
-
-            ClusterInstance clusterInstance = cluster.getInstanceContexts(parentInstanceId);
-            if (clusterInstance != null) {
-
-                // Cluster instance is already there. No need to create one.
-                VMClusterContext clusterContext = (VMClusterContext) this.getClusterContext();
-                if (clusterContext == null) {
-
-                    clusterContext = ClusterContextFactory.getVMClusterContext(clusterInstance.getInstanceId(), cluster,
-                            hasScalingDependents());
-                    this.setClusterContext(clusterContext);
-                }
-
-                // create VMClusterContext and then add all the instanceContexts
-                clusterContext.addInstanceContext(parentInstanceId, cluster, hasScalingDependents(),
-                        groupScalingEnabledSubtree());
-                if (this.getInstance(clusterInstance.getInstanceId()) == null) {
-                    this.addInstance(clusterInstance);
-                }
-                // Checking the current status of the cluster instance
-                boolean stateChanged =
-                        ServiceReferenceHolder.getInstance().getClusterStatusProcessorChain()
-                                .process("", cluster.getClusterId(), clusterInstance.getInstanceId());
-                if (!stateChanged && clusterInstance.getStatus() != ClusterStatus.Created) {
-                    this.notifyParentMonitor(clusterInstance.getStatus(),
-                            clusterInstance.getInstanceId());
-
-                    if (this.hasMonitoringStarted().compareAndSet(false, true)) {
-                        this.startScheduler();
-                        log.info("Monitoring task for Cluster Monitor with cluster id " +
-                                cluster.getClusterId() + " started successfully");
-                    }
-                }
-            } else {
-                createClusterInstance(cluster.getServiceName(), cluster.getClusterId(), null, parentInstanceId, partitionId,
-                        parentMonitorInstance.getNetworkPartitionId());
-
-            }
-            return true;
-
-        } else {
-            return false;
-
-        }
-
-    }
-
-    /**
-     * Move all the members of the cluster instance to termiantion pending
-     *
-     * @param instanceId
-     */
-    public void moveMembersFromActiveToPendingTermination(String instanceId) {
-
-        //TODO take read lock for network partition context
-        //FIXME to iterate properly
-        for (ClusterLevelNetworkPartitionContext networkPartitionContext :
-                ((VMClusterContext) this.clusterContext).getNetworkPartitionCtxts().values()) {
-            ClusterInstanceContext clusterInstanceContext =
-                    (ClusterInstanceContext) networkPartitionContext.getInstanceContext(instanceId);
-            if (clusterInstanceContext != null) {
-                for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts()) {
-                    List<String> members = new ArrayList<String>();
-
-                    Iterator<MemberContext> iterator = partitionContext.getActiveMembers().listIterator();
-                    while (iterator.hasNext()) {
-                        MemberContext activeMember = iterator.next();
-                        members.add(activeMember.getMemberId());
-                    }
-
-                    for (String memberId : members) {
-                        partitionContext.moveActiveMemberToTerminationPendingMembers(
-                                memberId);
-                    }
-                    List<String> pendingMembers = new ArrayList<String>();
-
-                    Iterator<MemberContext> pendingIterator = partitionContext.getPendingMembers().listIterator();
-                    while (pendingIterator.hasNext()) {
-                        MemberContext activeMember = pendingIterator.next();
-                        pendingMembers.add(activeMember.getMemberId());
-                    }
-                    for (String memberId : members) {
-                        // pending members
-                        if (log.isDebugEnabled()) {
-                            log.debug("Moving pending member [member id] " + memberId + " the obsolete list");
-                        }
-                        partitionContext.movePendingMemberToObsoleteMembers(memberId);
-                    }
-                }
-            }
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/d9c323a2/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
deleted file mode 100644
index a69d3bd..0000000
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
+++ /dev/null
@@ -1,194 +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.cluster;
-//
-//import java.util.List;
-//import java.util.Map;
-//import java.util.Set;
-//
-//import org.apache.commons.configuration.XMLConfiguration;
-//import org.apache.commons.logging.Log;
-//import org.apache.commons.logging.LogFactory;
-//import org.apache.stratos.autoscaler.*;
-//import org.apache.stratos.autoscaler.context.cluster.AbstractClusterContext;
-//import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
-//import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
-//import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
-//import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.PartitionManager;
-//import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
-//import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
-//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.common.constants.StratosConstants;
-//import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
-//
-///**
-// * Is responsible for monitoring a service cluster. This runs periodically
-// * and perform minimum instance check and scaling check using the underlying
-// * rules engine.
-// */
-//public class VMLbClusterMonitor extends VMClusterMonitor {
-//
-//    private static final Log log = LogFactory.getLog(VMLbClusterMonitor.class);
-//
-//    public VMLbClusterMonitor(String serviceType, String clusterId) {
-//        super(serviceType, clusterId, new AutoscalerRuleEvaluator( StratosConstants.VM_MIN_CHECK_DROOL_FILE,
-//                StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, StratosConstants.VM_SCALE_CHECK_DROOL_FILE));
-//        readConfigurations();
-//    }
-//
-//    @Override
-//    public void run() {
-//
-//        while (!isDestroyed()) {
-//            if (log.isDebugEnabled()) {
-//                log.debug("Cluster monitor is running.. " + this.toString());
-//            }
-//            try {
-//                //TODO ******** if (!ClusterStatus.Inactive.equals(getStatus())) {
-//                    monitor();
-//                /*} else {
-//                    if (log.isDebugEnabled()) {
-//                        log.debug("LB Cluster monitor is suspended as the cluster is in " +
-//                                ClusterStatus.Inactive + " mode......");
-//                    }
-//                }*/
-//            } catch (Exception e) {
-//                log.error("Cluster monitor: Monitor failed. " + this.toString(), e);
-//            }
-//            try {
-//                Thread.sleep(getMonitorIntervalMilliseconds());
-//            } catch (InterruptedException ignore) {
-//            }
-//        }
-//    }
-//
-//    @Override
-//    protected void monitor() {
-//
-//        Set<Map.Entry<String, AbstractClusterContext>> instanceIdToClusterCtxtEntries = instanceIdToClusterContextMap.entrySet();
-//        for (final Map.Entry<String, AbstractClusterContext> instanceIdToClusterCtxtEntry : instanceIdToClusterCtxtEntries) {
-//            Runnable monitoringRunnable = new Runnable() {
-//
-//                @Override
-//                public void run() {
-//                    for (ClusterLevelNetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
-//
-//                        // minimum check per partition
-//                        for (ClusterLevelPartitionContext partitionContext : networkPartitionContext.getPartitionCtxts()
-//                                .values()) {
-//
-//                            if (partitionContext != null) {
-//                                getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
-//                                getMinCheckKnowledgeSession().setGlobal("isPrimary", false);
-//
-//                                if (log.isDebugEnabled()) {
-//                                    log.debug(String.format("Running minimum check for partition %s ",
-//                                            partitionContext.getPartitionId()));
-//                                }
-//
-//                                minCheckFactHandle =
-//                                        AutoscalerRuleEvaluator.evaluate(getMinCheckKnowledgeSession(),
-//                                                minCheckFactHandle,
-//                                                partitionContext);
-//                                obsoleteCheckFactHandle =
-//                                        AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
-//                                                obsoleteCheckFactHandle, partitionContext);
-//                                // start only in the first partition context
-//                                break;
-//                            }
-//
-//                        }
-//
-//                    }
-//                }
-//            };
-//
-//            monitoringRunnable.run();
-//        }
-//    }
-//
-//    @Override
-//    public void destroy() {
-//        getMinCheckKnowledgeSession().dispose();
-//        getObsoleteCheckKnowledgeSession().dispose();
-//        getMinCheckKnowledgeSession().dispose();
-//        setDestroyed(true);
-//        stopScheduler();
-//        if (log.isDebugEnabled()) {
-//            log.debug("VMLbClusterMonitor Drools session has been disposed. " + this.toString());
-//        }
-//    }
-//
-//    @Override
-//    protected void readConfigurations() {
-//        XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration();
-//        int monitorInterval = conf.getInt(AutoScalerConstants.VMLb_Cluster_MONITOR_INTERVAL, 90000);
-//        setMonitorIntervalMilliseconds(monitorInterval);
-//        if (log.isDebugEnabled()) {
-//            log.debug("VMLbClusterMonitor task interval set to : " + getMonitorIntervalMilliseconds());
-//        }
-//    }
-//
-//    @Override
-//    public void handleClusterRemovedEvent(
-//            ClusterRemovedEvent clusterRemovedEvent) {
-//
-//        String deploymentPolicy = clusterRemovedEvent.getDeploymentPolicy();
-//        String clusterId = clusterRemovedEvent.getClusterId();
-//        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);
-//                }
-//
-//            }
-//        }
-//    }
-//
-//    @Override
-//    public String toString() {
-//        return "VMLbClusterMonitor [clusterId=" + getClusterId() + "]";
-//    }
-//
-//    @Override
-//    public void onChildScalingEvent(MonitorScalingEvent scalingEvent) {
-//
-//    }
-//
-//    @Override
-//    public void onParentScalingEvent(MonitorScalingEvent scalingEvent) {
-//
-//    }
-//}

http://git-wip-us.apache.org/repos/asf/stratos/blob/d9c323a2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index 668aac4..957e0d3 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -33,7 +33,7 @@ import org.apache.stratos.autoscaler.exception.application.DependencyBuilderExce
 import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
-import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
+import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
@@ -327,7 +327,7 @@ public class GroupMonitor extends ParentComponentMonitor {
                         Monitor monitor = aliasToActiveMonitorsMap.get(
                                 scalingDependentListComponent);
                         if (monitor instanceof GroupMonitor ||
-                                monitor instanceof VMClusterMonitor) {
+                                monitor instanceof ClusterMonitor) {
                             ScalingEvent childScalingEvent = new ScalingEvent(monitor.getId(),
                                     monitor.getId(),
                                     scalingEvent.getInstanceId(),

http://git-wip-us.apache.org/repos/asf/stratos/blob/d9c323a2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index d927223..6b635f6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -30,7 +30,6 @@ import org.apache.stratos.autoscaler.applications.dependency.DependencyTree;
 import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationChildContext;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import org.apache.stratos.autoscaler.context.InstanceContext;
-import org.apache.stratos.autoscaler.context.partition.network.ApplicationLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
@@ -41,7 +40,7 @@ import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.MonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
+import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.ScalingOverMaxEvent;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
@@ -611,7 +610,7 @@ public abstract class ParentComponentMonitor extends Monitor implements Runnable
                             Monitor monitor = aliasToActiveMonitorsMap.get(
                                     scalingDependentListComponent);
                             if (monitor instanceof GroupMonitor ||
-                                    monitor instanceof VMClusterMonitor) {
+                                    monitor instanceof ClusterMonitor) {
                                 ScalingEvent scalingEvent = new ScalingEvent(monitor.getId(),
                                         networkPartitionContext.getId(),
                                         instanceContext.getId(),

http://git-wip-us.apache.org/repos/asf/stratos/blob/d9c323a2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
index 512ed41..1374358 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java
@@ -47,65 +47,21 @@ public class AutoscalerRuleEvaluator {
 	
 	private static final Log log = LogFactory.getLog(AutoscalerRuleEvaluator.class);
 
-//	//vm drool files as default
-//	private String minCheckDroolFileName = StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE;
-//	private String obsoleteCheckDroolFileName = StratosConstants.CONTAINER_OBSOLETE_CHECK_DROOL_FILE;
-//	private String scaleCheckDroolFileName = StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE;
-//
-//	private static KnowledgeBase minCheckKbase;
-//	private static KnowledgeBase obsoleteCheckKbase;
-//	private static KnowledgeBase scaleCheckKbase;
-
     private static Map<String, KnowledgeBase> knowledgeBases;
 
     public AutoscalerRuleEvaluator(){
-
         knowledgeBases = new HashMap<String, KnowledgeBase>();
-//    	if (minCheckDroolFileName != null && !minCheckDroolFileName.isEmpty()) {
-//    		this.minCheckDroolFileName = minCheckDroolFileName;
-//		}
-//
-//    	if (obsoleteCheckDroolFileName != null && !obsoleteCheckDroolFileName.isEmpty()) {
-//    		this.obsoleteCheckDroolFileName = obsoleteCheckDroolFileName;
-//		}
-//
-//    	if (scaleCheckDroolFileName != null && !scaleCheckDroolFileName.isEmpty()) {
-//    		this.scaleCheckDroolFileName = scaleCheckDroolFileName;
-//		}
-//
-//        minCheckKbase = readKnowledgeBase(this.minCheckDroolFileName);
-//
-//        if (log.isDebugEnabled()) {
-//            log.debug("Minimum check rule is parsed successfully : " + this.minCheckDroolFileName);
-//        }
-//
-//        obsoleteCheckKbase = readKnowledgeBase(this.obsoleteCheckDroolFileName);
-//
-//        if (log.isDebugEnabled()) {
-//            log.debug("Obsolete check rule is parsed successfully : " + this.obsoleteCheckDroolFileName);
-//        }
-//
-//        scaleCheckKbase = readKnowledgeBase(this.scaleCheckDroolFileName);
-//
-//        if (log.isDebugEnabled()) {
-//            log.debug("Scale check rule is parsed successfully : " + this.scaleCheckDroolFileName);
-//        }
-//
     }
 
     public void parseAndBuildKnowledgeBaseForDroolsFile(String drlFileName){
-
         knowledgeBases.put(drlFileName, readKnowledgeBase(drlFileName));
 
         if (log.isDebugEnabled()) {
             log.debug("Drools file is parsed successfully : " + drlFileName);
         }
-
     }
     
     public static FactHandle evaluate(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) {
-
-
         if (handle == null) {
             ksession.setGlobal("delegator", new RuleTasksDelegator());
             handle = ksession.insert(obj);
@@ -118,82 +74,6 @@ public class AutoscalerRuleEvaluator {
         }
         return handle;
     }
-//
-//    public static FactHandle evaluateObsoleteCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) {
-//        if (handle == null) {
-//            ksession.setGlobal("delegator", new RuleTasksDelegator());
-//            handle = ksession.insert(obj);
-//        } else {
-//            ksession.update(handle, obj);
-//        }
-//        ksession.fireAllRules();
-//        if(log.isDebugEnabled()){
-//            log.debug(String.format("Obsolete check executed for : %s ", obj));
-//        }
-//        return handle;
-//    }
-//
-//    public static FactHandle evaluateScaleCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) {
-//        if (handle == null) {
-//            ksession.setGlobal("delegator", new RuleTasksDelegator());
-//            handle = ksession.insert(obj);
-//        } else {
-//            ksession.update(handle, obj);
-//        }
-//        ksession.fireAllRules();
-//        if(log.isDebugEnabled()){
-//            log.debug(String.format("Scale check executed for : %s ", obj));
-//        }
-//        return handle;
-//    }
-//
-//    public static FactHandle evaluateDependentScaleCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) {
-//        if (handle == null) {
-//            ksession.setGlobal("delegator", new RuleTasksDelegator());
-//            handle = ksession.insert(obj);
-//        } else {
-//            ksession.update(handle, obj);
-//        }
-//        ksession.fireAllRules();
-//        if(log.isDebugEnabled()){
-//            log.debug(String.format("Dependent scale check executed for : %s ", obj));
-//        }
-//        return handle;
-//    }
-//
-//    public static FactHandle evaluateTerminateAll(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) {
-//        if (handle == null) {
-//            ksession.setGlobal("delegator", new RuleTasksDelegator());
-//            handle = ksession.insert(obj);
-//        } else {
-//            ksession.update(handle, obj);
-//        }
-//        ksession.fireAllRules();
-//        if(log.isDebugEnabled()){
-//            log.debug(String.format("Terminate all check executed for : %s ", obj));
-//        }
-//        return handle;
-//    }
-//
-//    public static FactHandle evaluateTerminateDependency(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) {
-//    	if(log.isDebugEnabled()){
-//            log.debug(String.format("Terminate dependency check executing for : %s ", obj));
-//        }
-//        if (handle == null) {
-//            ksession.setGlobal("delegator", new RuleTasksDelegator());
-//            handle = ksession.insert(obj);
-//        } else {
-//            ksession.update(handle, obj);
-//        }
-//        if(log.isDebugEnabled()){
-//            log.debug(String.format("Terminate dependency check firing rules for : %s ", ksession));
-//        }
-//        ksession.fireAllRules();
-//        if(log.isDebugEnabled()){
-//            log.debug(String.format("Terminate dependency check executed for : %s ", obj));
-//        }
-//        return handle;
-//    }
 
     public StatefulKnowledgeSession getStatefulSession(String drlFileName) {
         StatefulKnowledgeSession ksession;
@@ -201,48 +81,6 @@ public class AutoscalerRuleEvaluator {
         ksession.setGlobal("log", RuleLog.getInstance());
         return ksession;
     }
-    
-//    public StatefulKnowledgeSession getObsoleteCheckStatefulSession() {
-//        StatefulKnowledgeSession ksession;
-//        ksession = obsoleteCheckKbase.newStatefulKnowledgeSession();
-//        ksession.setGlobal("log", RuleLog.getInstance());
-//        return ksession;
-//    }
-//
-//    public StatefulKnowledgeSession getScaleCheckStatefulSession() {
-//        StatefulKnowledgeSession ksession;
-//        ksession = scaleCheckKbase.newStatefulKnowledgeSession();
-//        ksession.setGlobal("log", RuleLog.getInstance());
-//        return ksession;
-//    }
-//
-//    public StatefulKnowledgeSession getTerminateAllStatefulSession() {
-//        StatefulKnowledgeSession ksession;
-//        ksession = scaleCheckKbase.newStatefulKnowledgeSession();
-//        ksession.setGlobal("log", RuleLog.getInstance());
-//        return ksession;
-//    }
-
-//    public static String getLbClusterId(ClusterLevelPartitionContext clusterMonitorPartitionContext, String nwpartitionId) {
-//        Properties props = clusterMonitorPartitionContext.getProperties();
-//        String value =
-//                       (String) props.get(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF);
-//
-//        if (value == null){
-//            return null;
-//        }
-//
-//        String lbClusterId = null;
-//
-//        NetworkPartitionLbHolder networkPartitionLbHolder = PartitionManager.getInstance().getNetworkPartitionLbHolder(nwpartitionId);
-//        if (value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) {
-//            lbClusterId = networkPartitionLbHolder.getDefaultLbClusterId();
-//        } else if (value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) {
-//            String serviceName = clusterMonitorPartitionContext.getServiceName();
-//            lbClusterId = networkPartitionLbHolder.getLBClusterIdOfService(serviceName);
-//        }
-//        return lbClusterId;
-//    }
 
     private static KnowledgeBase readKnowledgeBase(String drlFileName) {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();