You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/07/02 08:40:55 UTC

[05/10] committing org.apache.stratos.mediator.autoscale

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleInMediator.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleInMediator.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleInMediator.java
deleted file mode 100644
index ea0138a..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleInMediator.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- * 
- * WSO2 Inc. 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.wso2.carbon.mediator.autoscale.lbautoscale.mediators;
-
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.http.protocol.HTTP;
-import org.apache.synapse.ManagedLifecycle;
-import org.apache.synapse.MessageContext;
-import org.apache.synapse.core.SynapseEnvironment;
-import org.apache.synapse.core.axis2.Axis2MessageContext;
-import org.apache.synapse.mediators.AbstractMediator;
-import org.wso2.carbon.lb.common.conf.LoadBalancerConfiguration;
-import org.wso2.carbon.lb.common.conf.util.HostContext;
-import org.wso2.carbon.lb.common.cache.URLMappingCache;
-import org.wso2.carbon.lb.common.util.DomainMapping;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.context.AppDomainContext;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.internal.RegistryManager;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleConstants;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleUtil;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscalerTaskDSHolder;
-
-import java.util.Map;
-
-/**
- * This Synapse mediator generates a token per request received. These tokens are used for tracking
- * the number of requests in flight. Once a response is received, the relevant token will be removed
- * by the {@link AutoscaleOutMediator}
- *
- * @see AutoscaleOutMediator
- */
-public class AutoscaleInMediator extends AbstractMediator implements ManagedLifecycle {
-
-    private LoadBalancerConfiguration lbConfig;
-    private Map<String, HostContext> hostCtxts;
-    /**
-     * keep the size of cache which used to keep hostNames of url mapping.
-     */
-    private URLMappingCache mappingCache;
-    private RegistryManager registryManager;
-    private int sizeOfCache;
-
-    public AutoscaleInMediator() {
-
-        this.lbConfig = AutoscalerTaskDSHolder.getInstance().getWholeLoadBalancerConfig();
-        hostCtxts = lbConfig.getHostContextMap();
-        sizeOfCache = lbConfig.getLoadBalancerConfig().getSizeOfCache();
-        mappingCache = URLMappingCache.getInstance(sizeOfCache);
-    }
-
-    public boolean mediate(MessageContext synCtx) {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Mediation started .......... " + AutoscaleInMediator.class.getName());
-
-        }
-
-        ConfigurationContext configCtx =
-                                         ((Axis2MessageContext) synCtx).getAxis2MessageContext()
-                                                                       .getConfigurationContext();
-        String uuid = org.apache.axiom.util.UIDGenerator.generateUID();
-        synCtx.setProperty(AutoscaleConstants.REQUEST_ID, uuid);
-
-        Map<String, Map<String, ?>> appDomainContexts =
-                                                                       AutoscaleUtil.getAppDomainContexts(configCtx,
-                                                                                                          lbConfig);
-        org.apache.axis2.context.MessageContext axis2MessageContext =
-                ((Axis2MessageContext) synCtx).getAxis2MessageContext();
-        Map<String, String> transportHeaders = (Map<String, String>) axis2MessageContext.
-                getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);
-        String targetHost = transportHeaders.get(HTTP.TARGET_HOST);
-        
-        String toAddress = synCtx.getTo().getAddress();
-        if (targetHost.contains(":")) {
-            targetHost = targetHost.substring(0, targetHost.indexOf(':'));
-        }
-
-        int tenantId = AutoscaleUtil.getTenantId(synCtx.getTo().toString());
-
-        String domain = null, subDomain = null;
-        
-        log.debug("************ Target Host: "+targetHost + " -- Tenant id : "+tenantId);
-
-        HostContext ctxt = hostCtxts.get(targetHost);
-        
-        if (ctxt == null) {
-
-            DomainMapping domainMapping = mappingCache.getMapping(targetHost);
-            if (domainMapping == null) {
-                registryManager = new RegistryManager();
-                domainMapping = registryManager.getMapping(targetHost);
-                mappingCache.addValidMapping(targetHost, domainMapping);
-            }
-            if (domainMapping != null) {
-
-                String actualHost = domainMapping.getActualHost();
-
-                // get the HostContext from the actual host name in the case of domain 
-                // mapping.
-                ctxt = hostCtxts.get(actualHost);
-
-            }
-        }
-
-        if (ctxt == null) {
-            log.debug("Host Context is null.");
-        	// we don't need to do anything 
-        	return true;
-        }
-
-
-        // gets the corresponding domain
-        domain = ctxt.getDomainFromTenantId(tenantId);
-        synCtx.setProperty(AutoscaleConstants.TARGET_DOMAIN, domain);
-
-        // gets the corresponding sub domain
-        subDomain = ctxt.getSubDomainFromTenantId(tenantId);
-        synCtx.setProperty(AutoscaleConstants.TARGET_SUB_DOMAIN, subDomain);
-
-        if (appDomainContexts.get(domain) == null) {
-            // if we do not find a correct context, we just ignore
-            log.debug("AppDomainContext not found for domain " + domain);
-
-        } else {
-            AppDomainContext appDomainContext = (AppDomainContext) appDomainContexts.get(domain).get(subDomain);
-
-            if (appDomainContext != null) {
-                appDomainContext.addRequestToken(uuid);
-                System.setProperty(AutoscaleConstants.IS_TOUCHED, "true");
-
-            } else {
-                // if we do not find a correct context, we just ignore
-                log.debug("AppDomainContext not found for sub domain: " + subDomain +
-                          " of domain: " + domain);
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public void destroy() {
-
-        log.info("Mediator destroyed! " + AutoscaleInMediator.class.getName());
-    }
-
-    @Override
-    public void init(SynapseEnvironment arg0) {
-
-        if (log.isDebugEnabled()) {
-            log.debug("Mediator initialized! " + AutoscaleInMediator.class.getName());
-        }
-    }
-    
-    private void throwException(String msg){
-        log.error(msg);
-        throw new RuntimeException(msg);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleOutMediator.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleOutMediator.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleOutMediator.java
deleted file mode 100644
index c6f41ab..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/mediators/AutoscaleOutMediator.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- * 
- * WSO2 Inc. 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.wso2.carbon.mediator.autoscale.lbautoscale.mediators;
-
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.synapse.ManagedLifecycle;
-import org.apache.synapse.MessageContext;
-import org.apache.synapse.core.SynapseEnvironment;
-import org.apache.synapse.core.axis2.Axis2MessageContext;
-import org.apache.synapse.mediators.AbstractMediator;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.context.AppDomainContext;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleConstants;
-
-import java.util.Map;
-
-/**
- * This Synapse mediator removes the request token generated by the {@link AutoscaleInMediator}
- * 
- * @see AutoscaleInMediator
- */
-public class AutoscaleOutMediator extends AbstractMediator implements ManagedLifecycle {
-
-    public boolean mediate(MessageContext synCtx) {
-
-        log.debug("Mediation started ....... " + AutoscaleOutMediator.class.getName());
-
-        ConfigurationContext configCtx =
-            ((Axis2MessageContext) synCtx).getAxis2MessageContext().getConfigurationContext();
-
-        String domain = (String) synCtx.getProperty(AutoscaleConstants.TARGET_DOMAIN);
-        // gets the corresponding sub domain
-        String subDomain = (String) synCtx.getProperty(AutoscaleConstants.TARGET_SUB_DOMAIN);
-        
-        String tokenId = (String) synCtx.getProperty(AutoscaleConstants.REQUEST_ID);
-        @SuppressWarnings("unchecked")
-        Map<String, Map<String, AppDomainContext>> appDomainContexts =
-            (Map<String, Map<String, AppDomainContext>>) configCtx.getPropertyNonReplicable(AutoscaleConstants.APP_DOMAIN_CONTEXTS);
-        AppDomainContext appDomainContext = null ;
-        
-        if(appDomainContexts.get(domain) != null){
-        	appDomainContext = appDomainContexts.get(domain).get(subDomain);
-        }
-        
-        if (appDomainContext != null) {
-            appDomainContext.removeRequestToken(tokenId);
-            System.setProperty(AutoscaleConstants.IS_TOUCHED, "true");
-        } else {
-            log.debug("AppDomainContext not found for domain " + domain+" and sub domain : "+subDomain);
-        }
-        return true;
-    }
-
-    @Override
-    public void destroy() {
-        log.debug("Autoscale out mediator destroyed...");
-    }
-
-    @Override
-    public void init(SynapseEnvironment arg0) {
-        log.debug("Autoscale out mediator started...");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/PendingInstancesStateChecker.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/PendingInstancesStateChecker.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/PendingInstancesStateChecker.java
deleted file mode 100644
index 0e84608..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/PendingInstancesStateChecker.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-*  Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. 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.wso2.carbon.mediator.autoscale.lbautoscale.state.check;
-
-import org.apache.axis2.clustering.management.GroupManagementAgent;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.clients.CloudControllerClient;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.context.LoadBalancerContext;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleConstants;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleUtil;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscalerTaskDSHolder;
-
-public class PendingInstancesStateChecker implements Runnable {
-    
-    private static final Log log = LogFactory.getLog(PendingInstancesStateChecker.class);
-    private LoadBalancerContext groupCtxt = null;
-    private String domain;
-    private String subDomain;
-    private int expectedIncrementOfinstanceCount, originalRunningInstanceCount;
-    private CloudControllerClient ccClient;
-    
-    public PendingInstancesStateChecker(LoadBalancerContext ctxt, String aDomain, String aSubDomain,
-            int anexpectedInstanceCount, int currentCount, CloudControllerClient client) {
-        groupCtxt = ctxt;
-        domain = aDomain;
-        subDomain = aSubDomain;
-        expectedIncrementOfinstanceCount = anexpectedInstanceCount;
-        originalRunningInstanceCount = currentCount;
-        ccClient = client;
-    }
-
-    @Override
-    public void run() {
-
-        if (groupCtxt != null) {
-
-            int totalWaitedTime = 0;
-            int serverStartupDelay = AutoscalerTaskDSHolder
-                .getInstance()
-                .getWholeLoadBalancerConfig()
-                .getLoadBalancerConfig()
-                .getServerStartupDelay();
-
-            log.debug("Pending Instances State Checker has started for: " +
-                AutoscaleUtil.domainSubDomainString(domain, subDomain) + ". Check expiry time : " + serverStartupDelay);
-
-            // for each sub domain, get the clustering group management agent
-            GroupManagementAgent agent =
-                AutoscalerTaskDSHolder.getInstance().getAgent()
-                    .getGroupManagementAgent(domain,
-                        subDomain);
-            int startingRunningInstanceCount = agent.getMembers().size();
-
-            // we give some time for the server to get joined, we'll check time to time
-            // whether the instance has actually joined the ELB.
-            while ((agent.getMembers().size() < (originalRunningInstanceCount + expectedIncrementOfinstanceCount)) &&
-                totalWaitedTime < serverStartupDelay) {
-                int upToDateRunningInstanceCount = agent.getMembers().size();
-
-                log.debug(AutoscaleUtil.domainSubDomainString(domain, subDomain) +
-                    " - Number of current running instances " +
-                        upToDateRunningInstanceCount);
-
-                if (upToDateRunningInstanceCount > startingRunningInstanceCount) {
-                    int newlyJoinedInstanceCount = upToDateRunningInstanceCount - startingRunningInstanceCount;
-                    // set new running instance count
-                    groupCtxt.setRunningInstanceCount(upToDateRunningInstanceCount);
-                    // decrement the pending instance count
-                    groupCtxt.decrementPendingInstancesIfNotZero(newlyJoinedInstanceCount);
-                    // update the starting running instance count
-                    startingRunningInstanceCount = upToDateRunningInstanceCount;
-
-                    log.debug(AutoscaleUtil.domainSubDomainString(domain, subDomain) +
-                        " - Instances newly joined: " +
-                            newlyJoinedInstanceCount);
-                }
-
-                try {
-                    Thread.sleep(AutoscaleConstants.INSTANCE_REMOVAL_CHECK_TIME);
-                } catch (InterruptedException ignore) {
-                }
-
-                totalWaitedTime += AutoscaleConstants.INSTANCE_REMOVAL_CHECK_TIME;
-            }
-
-            log.debug(AutoscaleUtil.domainSubDomainString(domain, subDomain) + "- Waited for : " +
-                totalWaitedTime +
-                " (milliseconds) till pending members get joined.");
-
-            if (agent.getMembers().size() < (originalRunningInstanceCount + expectedIncrementOfinstanceCount)) {
-
-                int instanceCountFailedToJoin =
-                    originalRunningInstanceCount + expectedIncrementOfinstanceCount - agent.getMembers().size();
-                log.debug(AutoscaleUtil.domainSubDomainString(domain, subDomain) +
-                    "Instances that are failed to join: " +
-                        instanceCountFailedToJoin);
-
-                // to avoid an infinite loop
-                int retries = instanceCountFailedToJoin + 2;
-
-                while (instanceCountFailedToJoin > 0 && retries > 0) {
-                    // instances spawned haven't joined ELB, so we assume that instance is
-                    // corrupted.
-                    // hence, we ask CC to terminate it.
-                    try {
-                        log.debug("Terminating lastly spwaned instance of " +
-                            AutoscaleUtil.domainSubDomainString(domain, subDomain));
-                        ccClient.terminateLastlySpawnedInstance(domain, subDomain);
-                        instanceCountFailedToJoin--;
-                        // decrement pending count
-                        groupCtxt.decrementPendingInstancesIfNotZero(1);
-                    } catch (Exception e) {
-                        log
-                            .error(
-                                "Instance termination failed for " +
-                                    AutoscaleUtil.domainSubDomainString(domain, subDomain),
-                                e);
-                    } finally {
-                        retries--;
-                    }
-                }
-
-                // decrement pending count
-                groupCtxt.decrementPendingInstancesIfNotZero(instanceCountFailedToJoin);
-            }
-
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/TerminatingInstancesStateChecker.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/TerminatingInstancesStateChecker.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/TerminatingInstancesStateChecker.java
deleted file mode 100644
index 3807f7b..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/state/check/TerminatingInstancesStateChecker.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-*  Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
-*
-*  WSO2 Inc. 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.wso2.carbon.mediator.autoscale.lbautoscale.state.check;
-
-import org.apache.axis2.clustering.management.GroupManagementAgent;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.context.LoadBalancerContext;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleConstants;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleUtil;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscalerTaskDSHolder;
-
-public class TerminatingInstancesStateChecker implements Runnable {
-    
-    private static final Log log = LogFactory.getLog(TerminatingInstancesStateChecker.class);
-    private LoadBalancerContext groupCtxt = null;
-    private String domain;
-    private String subDomain;
-    
-    public TerminatingInstancesStateChecker(LoadBalancerContext ctxt, String aDomain, String aSubDomain) {
-        groupCtxt = ctxt;
-        domain = aDomain;
-        subDomain = aSubDomain;
-    }
-
-    @Override
-    public void run() {
-
-        if (groupCtxt != null) {
-
-            groupCtxt.incrementTerminatingInstances(1);
-            
-            int totalWaitedTime = 0;
-            int serverStartupDelay = AutoscalerTaskDSHolder
-                .getInstance()
-                .getWholeLoadBalancerConfig()
-                .getLoadBalancerConfig()
-                .getServerStartupDelay();
-            log.info("Terminating Instances State Checker has started for: " +
-                AutoscaleUtil.domainSubDomainString(domain, subDomain) + ". Check expiry time : " + serverStartupDelay);
-
-            // for each sub domain, get the clustering group management agent
-            GroupManagementAgent agent =
-                AutoscalerTaskDSHolder.getInstance().getAgent()
-                    .getGroupManagementAgent(domain,
-                        subDomain);
-
-            int startingRunningInstanceCount = agent.getMembers().size();
-
-            // we give some time for the server to be terminated, we'll check time to time
-            // whether the instance has actually left the cluster.
-            while (agent.getMembers().size() == startingRunningInstanceCount &&
-                totalWaitedTime < serverStartupDelay) {
-
-                try {
-                    Thread.sleep(AutoscaleConstants.INSTANCE_REMOVAL_CHECK_TIME);
-                } catch (InterruptedException ignore) {
-                }
-
-                totalWaitedTime += AutoscaleConstants.INSTANCE_REMOVAL_CHECK_TIME;
-            }
-
-            log.debug(AutoscaleUtil.domainSubDomainString(domain, subDomain) + "- Waited for : " +
-                totalWaitedTime +
-                " (milliseconds) till terminating member left the cluster.");
-
-            // we recalculate number of alive instances
-            groupCtxt.decrementTerminatingInstancesIfNotZero(1);
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskInitializer.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskInitializer.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskInitializer.java
deleted file mode 100644
index 5696643..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskInitializer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- *  Copyright (c) WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- *  Licensed 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.wso2.carbon.mediator.autoscale.lbautoscale.task;
-
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.synapse.task.TaskConstants;
-import org.apache.synapse.task.TaskDescriptionRepository;
-import org.apache.synapse.task.TaskScheduler;
-import org.wso2.carbon.utils.AbstractAxis2ConfigurationContextObserver;
-
-public class AutoscalerTaskInitializer extends AbstractAxis2ConfigurationContextObserver {
-
-    public static final java.lang.String CARBON_TASK_SCHEDULER = "CARBON_TASK_SCHEDULER";
-    public static final java.lang.String CARBON_TASK_REPOSITORY = "CARBON_TASK_REPOSITORY";
-
-    public void createdConfigurationContext(ConfigurationContext configContext) {
-        TaskScheduler scheduler = (TaskScheduler)configContext.getProperty(AutoscalerTaskInitializer.CARBON_TASK_SCHEDULER);
-        if (scheduler == null) {
-            scheduler = new TaskScheduler(TaskConstants.TASK_SCHEDULER);
-            scheduler.init(null);
-            configContext.setProperty(AutoscalerTaskInitializer.CARBON_TASK_SCHEDULER, scheduler);
-        } else if(!scheduler.isInitialized()) {
-            scheduler.init(null);
-        }
-
-        if (configContext.getProperty(AutoscalerTaskInitializer.CARBON_TASK_REPOSITORY) == null) {
-            TaskDescriptionRepository repository = new TaskDescriptionRepository();
-            configContext.setProperty(
-                    AutoscalerTaskInitializer.CARBON_TASK_REPOSITORY, repository);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskMgmtAdminService.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskMgmtAdminService.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskMgmtAdminService.java
deleted file mode 100644
index b1650d6..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalerTaskMgmtAdminService.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/**
- * Copyright (c) WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * Licensed 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.wso2.carbon.mediator.autoscale.lbautoscale.task;
-
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.util.AXIOMUtil;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.task.TaskDescription;
-import org.apache.synapse.task.TaskDescriptionFactory;
-import org.apache.synapse.task.TaskDescriptionSerializer;
-import org.apache.synapse.task.service.TaskManagementService;
-import org.wso2.carbon.core.AbstractAdmin;
-import org.wso2.carbon.task.TaskManagementException;
-import org.wso2.carbon.task.TaskManager;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import java.util.*;
-
-public class AutoscalerTaskMgmtAdminService extends AbstractAdmin implements TaskManagementService{
-
-    private static final Log log = LogFactory.getLog(AutoscalerTaskMgmtAdminService.class);
-
-    private TaskSchedulingManager schedulingManager;
-
-
-    private static final String TASK_EXTENSION_NS =
-            "http://www.wso2.org/tasks";
-
-    private static final OMFactory FACTORY = OMAbstractFactory.getOMFactory();
-
-    private static final OMNamespace TASK_OM_NAMESPACE = FACTORY.createOMNamespace(
-            TASK_EXTENSION_NS, "task");
-
-    public AutoscalerTaskMgmtAdminService(){}
-    
-    public AutoscalerTaskMgmtAdminService(ConfigurationContext configurationContext) {
-        this.schedulingManager = TaskSchedulingManager.getInstance();
-        this.configurationContext = configurationContext;
-    }
-
-    public void shutdown() {
-        schedulingManager.shutDown(getConfigContext());
-    }
-
-    public void addTaskDescription(TaskDescription taskDescription, Map<String, Object> resources)
-            throws Exception {
-        if (log.isDebugEnabled()) {
-            log.debug("Adding the Task " + taskDescription.getName());
-        }
-        try {
-            schedulingManager.scheduleTask(taskDescription, resources, getConfigContext());
-        } catch (Exception e) {
-            String msg = "Cannot add the task " + taskDescription.getName() + "..";
-            log.error(msg, e);  
-            throw e;
-        }
-    }
-
-    /**
-     * Passing the Task Description to scheduling manager to actually add it to the Task
-     * Description Repository.
-     *
-     * @param taskDescription TaskDescription
-     */
-    public void addTaskDescription(TaskDescription taskDescription) {
-        if (log.isDebugEnabled()) {
-            log.debug("Adding the Task " + taskDescription.getName());
-        }
-        try {
-            Map<String, Object> resources = new HashMap<String, Object>();
-            schedulingManager.scheduleTask(taskDescription, resources, getConfigContext());
-        } catch (Exception e) {
-            String msg = "Cannot add the task";
-            log.error(msg, e);
-        }
-    }
-
-    public void addTaskDescriptionInAnOmElement(String taskElementString) throws
-                                                                          TaskManagementException,
-                                                                          XMLStreamException {
-        OMElement taskElement = AXIOMUtil.stringToOM(taskElementString);
-        if (log.isDebugEnabled()) {
-            log.debug("Add TaskDescription - Get a Task configuration  :" + taskElement);
-        }
-        TaskDescription taskDescription = validateAndCreate(taskElement);
-
-        try {
-            addTaskDescription(taskDescription);
-        } catch (Exception e) {
-            try {
-                getTaskManager().deleteTaskDescription(taskDescription.getName(),
-                        taskDescription.getGroup());
-            } catch (Exception ignored) {
-            }
-            handleException("Error creating a task : " + e.getMessage(), e);
-        }
-    }
-
-
-
-    public void deleteTaskDescription(TaskDescription taskDescription) {
-        String taskName = taskDescription.getName();
-        if (log.isDebugEnabled()) {
-            log.debug("Deleting the task " + taskName);
-        }
-        try {
-            schedulingManager.deleteTaskDescription(taskDescription, getConfigContext());
-        } catch (Exception e) {
-            log.error("Cannot delete the task " + taskName, e);
-        }
-    }
-
-    /**
-     * Indicating Task Scheduling manager to delete the task with the given task Name.
-     *
-     * @param taskName taskName
-     */
-    public void deleteTaskDescription(String taskName) {
-        if (log.isDebugEnabled()) {
-            log.debug("Deleting the task " + taskName);
-        }
-        try {
-            TaskDescription taskDescription = new TaskDescription();
-            taskDescription.setName(taskName);
-            schedulingManager.deleteTaskDescription(taskDescription, getConfigContext());
-        } catch (Exception e) {
-            log.error("Cannot delete the task " + taskName, e);
-        }
-    }
-
-    /**
-     * Notifying the Task Scheduling Manager to delete the previous Task Description from the
-     * Task Description Repository and add the edited task.
-     *
-     * @param taskDescription TaskDescription
-     */
-    public void editTaskDescription(TaskDescription taskDescription) {
-        if (log.isDebugEnabled()) {
-            log.debug("Editing the task " + taskDescription.getName());
-        }
-        if (schedulingManager.isContains(taskDescription.getName(), getConfigContext())) {
-            schedulingManager.deleteTaskDescription(taskDescription, getConfigContext());
-            schedulingManager.scheduleTask(taskDescription, null, getConfigContext());
-        } else {
-            log.error("Task " + taskDescription.getName() + "does not exist");
-        }
-    }
-
-    public void editTaskDescriptionInOmElement(
-            String taskElementString) throws TaskManagementException, XMLStreamException {
-        OMElement taskElement = AXIOMUtil.stringToOM(taskElementString);
-        if (log.isDebugEnabled()) {
-            log.debug("Edit TaskDescription - Get a Task configuration  :" + taskElement);
-        }
-        try {
-            editTaskDescription(validateAndCreate(taskElement));
-        } catch (Exception e) {
-            String msg = "Error editing Task";
-            throw new TaskManagementException(msg, e);
-        }
-    }
-
-    /**
-     * Returns the list of Task Descriptions that have been already added to the Task Description
-     * Repository.
-     *
-     * @return A list of Task Descriptions
-     */
-    public List<TaskDescription> getAllTaskDescriptions() {
-        List<TaskDescription> taskDescriptions = new ArrayList<TaskDescription>();
-        Iterator<TaskDescription> iterator = schedulingManager.getAllTaskDescriptions(
-                getConfigContext());
-
-        while (iterator.hasNext()) {
-            TaskDescription taskDescription = iterator.next();
-            if (taskDescription != null) {
-                taskDescriptions.add(taskDescription);
-            }
-        }
-        if (log.isDebugEnabled()) {
-            log.debug("All available Task based Scheduled Functions " + taskDescriptions);
-        }
-        return taskDescriptions;
-    }
-
-    public String getAllTaskDescriptionsInAnOMElement() throws AxisFault {
-        OMElement rootElement =
-                OMAbstractFactory.getOMFactory().createOMElement(new QName(TASK_EXTENSION_NS,
-                        "taskExtension", "task"));
-        try {
-            List<TaskDescription> descriptions = getAllTaskDescriptions();
-            for (TaskDescription taskDescription : descriptions) {
-                if (taskDescription != null) {
-                    OMElement taskElement =
-                            TaskDescriptionSerializer.serializeTaskDescription(TASK_OM_NAMESPACE,
-                                                                               taskDescription);
-                    validateTaskElement(taskElement);
-                    rootElement.addChild(taskElement);
-                }
-            }
-        } catch (TaskManagementException e) {
-            String msg = "Error loading all tasks";
-            log.error(msg, e);
-            throw new AxisFault(msg, e);
-        }
-        if (log.isDebugEnabled()) {
-            log.debug("Returning all TaskDescriptions as  :" + rootElement);
-        }
-        return rootElement.toString();
-    }
-
-    /**
-     * Returns the names of job groups that are being executed.
-     *
-     * @return An array of strings
-     */
-    public String[] getAllJobGroups() {
-        List<String> strings = getTaskManager().getAllJobGroups();
-        return strings.toArray(new String[strings.size()]);
-    }
-
-    /**
-     * Returns the TaskDescription associates with a particular task name
-     *
-     * @param taskName Task Name
-     * @return TaskDescription
-     */
-    public TaskDescription getTaskDescription(String taskName) {
-        return schedulingManager.getTaskDescription(taskName, getConfigContext());
-    }
-
-    public boolean isContains(String taskName) {
-        return schedulingManager.isContains(taskName, getConfigContext());
-    }
-
-    /**
-     * @param taskClass taskClass
-     * @return list of strings containing properties of the task class
-     */
-    public List<String> getPropertyNames(String taskClass) {
-        return null;
-    }
-
-    /**
-     * Returns the TaskManager instance currently being used
-     *
-     * @return TaskManager
-     */
-    private synchronized TaskManager getTaskManager() {
-        return (TaskManager) getConfigContext().getProperty(
-                TaskManager.CARBON_TASK_MANAGER);
-    }
-
-    /**
-     * Validates the OMElement which has a particular TaskDescription
-     * serialized into it.
-     *
-     * @param taskElement taskElement
-     * @throws TaskManagementException TaskManagementException
-     */
-    private static void validateTaskElement(
-            OMElement taskElement) throws TaskManagementException {
-        if (taskElement == null) {
-            handleException("Task Description OMElement can not be found.");
-        }
-    }
-
-    /**
-     * Handles the exception thrown and logs it.
-     *
-     * @param msg message to be logged
-     * @throws TaskManagementException TaskManagementException
-     */
-    private static void handleException(String msg) throws TaskManagementException {
-        log.error(msg);
-        throw new TaskManagementException(msg);
-    }
-
-    /**
-     * Handles the exception thrown and logs it.
-     *
-     * @param msg message to be logged
-     * @param e   exception thrown
-     * @throws TaskManagementException TaskManagementException
-     */
-    private static void handleException(String msg, Exception e) throws TaskManagementException {
-        log.error(msg, e);
-        throw new TaskManagementException(msg, e);
-    }
-
-    /**
-     * Validates an OMElement which has a TaskDescription serialized into it
-     * and returns the corresponding TaskDescription
-     *
-     * @param taskElement OMElement containing the TaskDescription
-     * @return TaskDescription
-     * @throws TaskManagementException TaskManagementException
-     */
-    private static TaskDescription validateAndCreate(
-            OMElement taskElement) throws TaskManagementException {
-
-        validateTaskElement(taskElement);
-        TaskDescription taskDescription =
-                TaskDescriptionFactory.createTaskDescription(taskElement, TASK_OM_NAMESPACE);
-        validateTaskDescription(taskDescription);
-        if (log.isDebugEnabled()) {
-            log.debug("Task Description : " + taskDescription);
-        }
-        return taskDescription;
-    }
-
-    /**
-     * Validates TaskDescriptions
-     *
-     * @param description TaskDescription
-     * @throws TaskManagementException TaskManagementException
-     */
-    private static void validateTaskDescription(
-            TaskDescription description) throws TaskManagementException {
-        if (description == null) {
-            handleException("Task Description can not be found.");
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalingJob.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalingJob.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalingJob.java
deleted file mode 100644
index 2edbd3a..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/AutoscalingJob.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Copyright (c) 2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- * 
- * Licensed 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.wso2.carbon.mediator.autoscale.lbautoscale.task;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.ManagedLifecycle;
-import org.apache.synapse.task.Task;
-import org.quartz.Job;
-import org.quartz.JobDetail;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import java.util.Map;
-
-public class AutoscalingJob implements Job {
-
-    public static final String AUTOSCALER_TASK = "autoscalerTask";
-
-    public static final String SYNAPSE_ENVI = "synapseEnv";
-
-    private static final Log log = LogFactory.getLog(AutoscalingJob.class);
-
-    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-
-        try {
-
-            Task task = null;
-
-            JobDetail jobDetail = jobExecutionContext.getJobDetail();
-
-            if (log.isDebugEnabled()) {
-                log.debug("Executing Autoscaler task : " + jobDetail.getKey().getName());
-            }
-
-            @SuppressWarnings("rawtypes")
-            Map mjdm = jobExecutionContext.getMergedJobDataMap();
-
-            task = (Task) mjdm.get(AUTOSCALER_TASK);
-
-            if (task instanceof ManagedLifecycle) {
-                // Execute Autoscaler task
-                ((ServiceRequestsInFlightAutoscaler) task).execute();
-            }
-
-        } catch (Exception e) {
-            throw new JobExecutionException(e);
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/ServiceRequestsInFlightAutoscaler.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/ServiceRequestsInFlightAutoscaler.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/ServiceRequestsInFlightAutoscaler.java
deleted file mode 100644
index 712ceb3..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/ServiceRequestsInFlightAutoscaler.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*
- * Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- * 
- * WSO2 Inc. 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.wso2.carbon.mediator.autoscale.lbautoscale.task;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-import org.apache.axis2.clustering.ClusteringAgent;
-import org.apache.axis2.clustering.ClusteringFault;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.ManagedLifecycle;
-import org.apache.synapse.core.SynapseEnvironment;
-import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
-import org.apache.synapse.task.Task;
-import org.wso2.carbon.lb.common.conf.LoadBalancerConfiguration;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.callables.AppNodeSanityCheckCallable;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.callables.AutoscaleDeciderCallable;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.callables.InstanceCountCallable;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.callables.PendingInstanceCountCallable;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.clients.CloudControllerClient;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.clients.CloudControllerOsgiClient;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.clients.CloudControllerStubClient;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.context.AppDomainContext;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.context.LoadBalancerContext;
-import org.wso2.carbon.lb.common.replication.RequestTokenReplicationCommand;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleConstants;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscaleUtil;
-import org.wso2.carbon.mediator.autoscale.lbautoscale.util.AutoscalerTaskDSHolder;
-
-/**
- * Service request in flight autoscaler task for Stratos service level auto-scaling
- */
-public class ServiceRequestsInFlightAutoscaler implements Task, ManagedLifecycle {
-
-    private static final Log log = LogFactory.getLog(ServiceRequestsInFlightAutoscaler.class);
-
-    /**
-     * This instance holds the loadbalancer configuration
-     */
-    private LoadBalancerConfiguration loadBalancerConfig;
-
-    /**
-     * Autoscaler service client instance
-     */
-    private CloudControllerClient autoscalerService;
-
-    /**
-     * AppDomainContexts for each domain
-     * Key - domain
-     * Value - Map of key - sub domain
-     * value - {@link AppDomainContext}
-     */
-    private Map<String, Map<String, ?>> appDomainContexts =
-        new HashMap<String, Map<String, ?>>();
-
-    /**
-     * LB Context for LB cluster
-     */
-    private final LoadBalancerContext lbContext = new LoadBalancerContext();
-
-    /**
-     * Attribute to keep track whether this instance is the primary load balancer.
-     */
-    private boolean isPrimaryLoadBalancer;
-
-    /**
-     * Keeps track whether this task is still running
-     */
-    private boolean isTaskRunning;
-    
-    /**
-     * Thread pool used in this task to execute parallel tasks.
-     */
-    private ExecutorService executor = Executors.newFixedThreadPool(100);
-
-    /**
-     * Check that all app nodes in all clusters meet the minimum configuration
-     */
-    private void appNodesSanityCheck() {
-        
-        List<Future<Boolean>> jobList = new ArrayList<Future<Boolean>>();
-        
-        for (String serviceDomain : loadBalancerConfig.getServiceDomains()) {
-            
-            String msg =
-                    "Sanity check is failed to run. No Appdomain context is generated for the" +
-                        " domain " + serviceDomain;
-            
-            // get the list of service sub_domains specified in loadbalancer config
-            String[] serviceSubDomains = loadBalancerConfig.getServiceSubDomains(serviceDomain);
-
-            for (String serviceSubDomain : serviceSubDomains) {
-                log.debug("Sanity check has started for: "+AutoscaleUtil.domainSubDomainString(serviceDomain, serviceSubDomain));
-                AppDomainContext appCtxt;
-                if (appDomainContexts.get(serviceDomain) != null) {
-                    appCtxt = (AppDomainContext) appDomainContexts.get(serviceDomain).get(serviceSubDomain);
-                    
-                    if (appCtxt != null) {
-                        // Concurrently perform the application node sanity check.
-                        Callable<Boolean> worker =
-                            new AppNodeSanityCheckCallable(serviceDomain, serviceSubDomain, autoscalerService, appCtxt);
-                        Future<Boolean> appNodeSanityCheck = executor.submit(worker);
-                        jobList.add(appNodeSanityCheck);
-
-                    } else{
-                        log.error(msg + " and sub domain " + serviceSubDomain + " combination.");
-                    }
-                } else{
-                    log.error(msg);
-                }
-            }
-        }
-        
-        // Retrieve the results of the concurrently performed sanity checks.
-        for (Future<Boolean> job : jobList) {
-            try {
-                job.get();
-            } catch (Exception ignore) {
-                log.error(ignore.getMessage(), ignore);
-                // no need to throw
-            } 
-        }
-
-    }
-
-    /**
-     * Autoscale the entire system, analyzing the requests in flight of each domain - sub domain
-     */
-    private void autoscale() {
-        List<Future<Boolean>> jobList = new ArrayList<Future<Boolean>>();
-
-        for (String serviceDomain : loadBalancerConfig.getServiceDomains()) {
-
-            String msg =
-                "Autoscaler check is failed to run. No Appdomain context is generated for the" +
-                    " domain " + serviceDomain;
-
-            // get the list of service sub_domains specified in loadbalancer config
-            String[] serviceSubDomains = loadBalancerConfig.getServiceSubDomains(serviceDomain);
-
-            for (String serviceSubDomain : serviceSubDomains) {
-
-                log.debug("Autoscaling analysis is starting to run for domain: " + serviceDomain +
-                    " and sub domain: " + serviceSubDomain);
-
-                AppDomainContext appCtxt;
-                if (appDomainContexts.get(serviceDomain) != null) {
-                    appCtxt = (AppDomainContext) appDomainContexts.get(serviceDomain).get(serviceSubDomain);
-
-                    if (appCtxt != null) {
-
-                        // Concurrently make the auto-scaling decisions
-                        Callable<Boolean> worker =
-                            new AutoscaleDeciderCallable(serviceDomain, serviceSubDomain, autoscalerService, appCtxt);
-                        Future<Boolean> autoscalerDeciderCheck = executor.submit(worker);
-                        jobList.add(autoscalerDeciderCheck);
-
-                    } else {
-                        log.error(msg + " and sub domain " + serviceSubDomain + " combination.");
-                    }
-                } else {
-                    log.error(msg);
-                }
-            }
-        }
-
-        // Retrieve the results of the concurrently performed sanity checks.
-        for (Future<Boolean> job : jobList) {
-            try {
-                job.get();
-            } catch (Exception ignore) {
-                log.error(ignore.getMessage(), ignore);
-                // no need to throw
-            }
-        }
-    }
-
-    /**
-     * We compute the number of running instances of a particular domain using clustering agent.
-     */
-    private void computeRunningAndPendingInstances() {
-
-        int runningInstances = 0, pendingInstances = 0;
-
-        List<Future<Boolean>> jobList = new ArrayList<Future<Boolean>>();
-
-        for (String serviceDomain : loadBalancerConfig.getServiceDomains()) {
-
-            // get the list of service sub_domains specified in loadbalancer config
-            String[] serviceSubDomains = loadBalancerConfig.getServiceSubDomains(serviceDomain);
-
-            for (String serviceSubDomain : serviceSubDomains) {
-
-                AppDomainContext appCtxt;
-                if (appDomainContexts.get(serviceDomain) != null) {
-                    appCtxt = (AppDomainContext) appDomainContexts.get(serviceDomain).get(serviceSubDomain);
-                    
-                    log.debug("Values in App domain context: " +
-                        appCtxt.getPendingInstanceCount() +
-                            " - " +
-                            appCtxt.getRunningInstanceCount() +
-                            " - Ctxt: " +
-                            appCtxt.hashCode());
-
-                    if (appCtxt != null) {
-                        Callable<Boolean> worker =
-                            new InstanceCountCallable(serviceDomain, serviceSubDomain, autoscalerService, appCtxt);
-                        Future<Boolean> countInstancesJob = executor.submit(worker);
-                        jobList.add(countInstancesJob);
-                    }
-                }
-            }
-        }
-
-        for (Future<Boolean> job : jobList) {
-            try {
-                job.get();
-            } catch (Exception ignore) {
-                log.error(ignore.getMessage(), ignore);
-                // no need to throw
-            }
-        }
-
-        /* Calculate running load balancer instances */
-
-        // count this LB instance in.
-        runningInstances = 1;
-
-        runningInstances += AutoscalerTaskDSHolder.getInstance().getAgent().getAliveMemberCount();
-
-        lbContext.setRunningInstanceCount(runningInstances);
-
-        if (AutoscalerTaskDSHolder.getInstance().getAgent().getParameter("domain") == null) {
-            String msg = "Clustering Agent's domain parameter is null. Please specify a domain" +
-                " name in axis2.xml of Elastic Load Balancer.";
-            log.error(msg);
-            throw new RuntimeException(msg);
-        }
-
-        String lbDomain = AutoscalerTaskDSHolder.getInstance().getAgent().getParameter("domain").getValue().toString();
-
-        String lbSubDomain = null;
-
-        if (AutoscalerTaskDSHolder.getInstance().getAgent().getParameter("subDomain") != null) {
-            lbSubDomain =
-                AutoscalerTaskDSHolder.getInstance().getAgent().getParameter("subDomain").getValue().toString();
-        }
-
-        // reset
-        pendingInstances = 0;
-        try {
-            pendingInstances = lbContext.getPendingInstanceCount();
-        } catch (Exception e) {
-            log.error(e.getMessage(), e);
-            // no need to throw
-        }
-
-        lbContext.setPendingInstanceCount(pendingInstances);
-
-        log.debug("Load Balancer members of domain: " +
-            lbDomain +
-            " and sub domain: " +
-            lbSubDomain +
-            " running instances (including this): " +
-            runningInstances +
-            " - pending instances: "
-            +
-            pendingInstances);
-
-    }
-
-    @Override
-    public void destroy() {
-        appDomainContexts.clear();
-        log.debug("Cleared AppDomainContext Map.");
-    }
-
-    /**
-     * This is method that gets called periodically when the task runs.
-     * <p/>
-     * The exact sequence of execution is shown in this method.
-     */
-    @Override
-    public void execute() {
-
-        appDomainContexts =
-            AutoscaleUtil.getAppDomainContexts(
-                AutoscalerTaskDSHolder.getInstance().getConfigCtxt(),
-                loadBalancerConfig);
-
-        if (isTaskRunning) {
-            log.debug("Task is already running!");
-            return;
-        }
-        try {
-            isTaskRunning = true;
-            setIsPrimaryLB();
-            if (!isPrimaryLoadBalancer) {
-                log.debug("This is not the primary load balancer, hence will not " +
-                        "perform any sanity check.");
-                return;
-            }
-            sanityCheck();
-            autoscale();
-        } finally {
-            // if there are any changes in the request length
-            if (Boolean.parseBoolean(System.getProperty(AutoscaleConstants.IS_TOUCHED))) {
-                // primary LB will send out replication message to all load balancers
-                sendReplicationMessage();
-            }
-            isTaskRunning = false;
-            log.debug("Task finished a cycle.");
-        }
-    }
-
-    @Override
-    public void init(final SynapseEnvironment synEnv) {
-
-        String msg = "Autoscaler Service initialization failed and cannot proceed.";
-
-        loadBalancerConfig = AutoscalerTaskDSHolder.getInstance().getWholeLoadBalancerConfig();
-
-        if (loadBalancerConfig == null) {
-            log.error(msg + "Reason: Load balancer configuration is null.");
-            throw new RuntimeException(msg);
-        }
-
-        ConfigurationContext configCtx = ((Axis2SynapseEnvironment) synEnv).getAxis2ConfigurationContext();
-        AutoscalerTaskDSHolder.getInstance().setConfigCtxt(configCtx);
-
-        appDomainContexts = AutoscaleUtil.getAppDomainContexts(configCtx, loadBalancerConfig);
-        
-        AutoscalerTaskDSHolder.getInstance().setAgent(configCtx.getAxisConfiguration().getClusteringAgent());
-
-        boolean useEmbeddedAutoscaler = loadBalancerConfig.getLoadBalancerConfig().useEmbeddedAutoscaler();
-        
-        try {
-
-            if(useEmbeddedAutoscaler){
-                autoscalerService = new CloudControllerOsgiClient();
-            } else{
-                autoscalerService = new CloudControllerStubClient();
-            }
-            // let's initialize the auto-scaler service
-            autoscalerService.init();
-
-        }catch (Exception e) {
-            log.error(msg, e);
-            throw new RuntimeException(msg, e);
-        }
-
-        if (log.isDebugEnabled()) {
-
-            log.debug("Autoscaler task is initialized.");
-
-        }
-    }
-
-    /**
-     * Sanity check to see whether the number of LBs is the number specified in the LB config
-     */
-    private void loadBalancerSanityCheck() {
-
-        log.debug("Load balancer sanity check has started.");
-
-        // get current LB instance count
-        int currentLBInstances = lbContext.getInstances();
-
-        LoadBalancerConfiguration.LBConfiguration lbConfig =
-            loadBalancerConfig.getLoadBalancerConfig();
-
-        // get minimum requirement of LB instances
-        int requiredInstances = lbConfig.getInstances();
-
-        if (currentLBInstances < requiredInstances) {
-            log.debug("LB Sanity check failed. Running/Pending LB instances: " + currentLBInstances +
-                ". Required LB instances: " + requiredInstances);
-            int diff = requiredInstances - currentLBInstances;
-
-            // gets the domain of the LB
-            String lbDomain =
-                AutoscalerTaskDSHolder
-                    .getInstance()
-                    .getAgent()
-                    .getParameter("domain")
-                    .getValue()
-                    .toString();
-            String lbSubDomain =
-                AutoscalerTaskDSHolder
-                    .getInstance()
-                    .getAgent()
-                    .getParameter("subDomain")
-                    .getValue()
-                    .toString();
-
-            // Launch diff number of LB instances
-            log.debug("Launching " + diff + " LB instances.");
-
-            runInstances(lbContext, lbDomain, lbSubDomain, diff);
-        }
-    }
-
-    private int runInstances(final LoadBalancerContext context, final String domain,
-        final String subDomain,
-        int diff) {
-
-        int successfullyStartedInstanceCount = diff;
-
-        while (diff > 0) {
-            // call autoscaler service and ask to spawn an instance
-            // and increment pending instance count only if autoscaler service returns
-            // true.
-            try {
-                String ip = autoscalerService.startInstance(domain, subDomain);
-
-                if (ip == null || ip.isEmpty()) {
-                    log.debug("Instance start up failed. domain: " +
-                        domain +
-                            ", sub domain: " +
-                            subDomain);
-                    successfullyStartedInstanceCount--;
-                } else {
-                    log.debug("An instance of domain: " +
-                        domain +
-                            " and sub domain: " +
-                            subDomain +
-                            " is started up.");
-                    if (context != null) {
-                        context.incrementPendingInstances(1);
-                    }
-                }
-            } catch (Exception e) {
-                log.error("Failed to start an instance of sub domain: " + subDomain +
-                    " of domain : " + domain + ".\n", e);
-                successfullyStartedInstanceCount--;
-            }
-
-            diff--;
-        }
-
-        return successfullyStartedInstanceCount;
-    }
-
-    /**
-     * This method makes sure that the minimum configuration of the clusters in the system is
-     * maintained
-     */
-    private void sanityCheck() {
-
-        if (!isPrimaryLoadBalancer) {
-            log.debug("This is not the primary load balancer, hence will not " +
-                "perform any sanity check.");
-            return;
-        }
-
-        log.debug("This is the primary load balancer, starting to perform sanity checks.");
-
-        computeRunningAndPendingInstances();
-        loadBalancerSanityCheck();
-        appNodesSanityCheck();
-    }
-
-    /**
-     * Replicate information needed to take autoscaling decision for other ELBs
-     * in the cluster.
-     */
-    private void sendReplicationMessage() {
-
-        ClusteringAgent clusteringAgent = AutoscalerTaskDSHolder.getInstance().getAgent();
-        if (clusteringAgent != null) {
-            RequestTokenReplicationCommand msg = new RequestTokenReplicationCommand();
-            msg.setAppDomainContexts(appDomainContexts);
-            try {
-                clusteringAgent.sendMessage(msg, true);
-                System.setProperty(AutoscaleConstants.IS_TOUCHED, "false");
-                log.debug("Request token replication messages sent out successfully!!");
-
-            } catch (ClusteringFault e) {
-                log.error("Failed to send the request token replication message.", e);
-            }
-        }
-        else {
-            log
-                .debug("Clustering Agent is null. Hence, unable to send out the replication message.");
-        }
-    }
-
-    /**
-     * This method will check whether this LB is the primary LB or not and set
-     * attribute accordingly.
-     */
-    private void setIsPrimaryLB() {
-
-        ClusteringAgent clusteringAgent = AutoscalerTaskDSHolder.getInstance().getAgent();
-        if (clusteringAgent != null) {
-
-            isPrimaryLoadBalancer = clusteringAgent.isCoordinator();
-
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/TaskSchedulingManager.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/TaskSchedulingManager.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/TaskSchedulingManager.java
deleted file mode 100644
index 9c5ca8b..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/task/TaskSchedulingManager.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * Copyright (c) WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
- *
- * Licensed 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.wso2.carbon.mediator.autoscale.lbautoscale.task;
-
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.task.TaskDescription;
-import org.apache.synapse.task.TaskDescriptionRepository;
-import org.apache.synapse.task.TaskScheduler;
-import org.wso2.carbon.task.TaskManager;
-
-import java.util.Iterator;
-import java.util.Map;
-
-public class TaskSchedulingManager {
-
-    private static final Log log = LogFactory.getLog(TaskSchedulingManager.class);
-
-    private static TaskSchedulingManager thisInstance = new TaskSchedulingManager();
-
-    public static TaskSchedulingManager getInstance() {
-        return thisInstance;
-    }
-
-    /**
-     * This method adds a particular Task to the Task Description Repository and schedule it
-     * for the execution.
-     *
-     * @param taskDescription      TaskDescription
-     * @param resources            Map containing require meta data for the task execution.
-     * @param configurationContext ConfigurationContext
-     */
-    public void scheduleTask(TaskDescription taskDescription, Map<String, Object> resources,
-                             ConfigurationContext configurationContext) {
-        if (log.isDebugEnabled()) {
-            log.debug("Adding a Task Description to the Task Description Repository");
-        }
-
-        getTaskDescriptionRepository(configurationContext).addTaskDescription(taskDescription);
-        getTaskScheduler(configurationContext).scheduleTask(
-                taskDescription, resources, AutoscalingJob.class);
-
-        if (log.isDebugEnabled()) {
-            log.debug("Task Description " + taskDescription.getName() +
-                    " added to the Task Description Repository");
-        }
-    }
-
-    /**
-     * Returns a Task Description with a given name from the Task Description Repository.
-     *
-     * @param taskName             taskName
-     * @param configurationContext ConfigurationContext
-     * @return TaskDescription
-     */
-    public TaskDescription getTaskDescription(
-            String taskName, ConfigurationContext configurationContext) {
-        if (log.isDebugEnabled()) {
-            log.debug("Returning a Start up : " + taskName + " from the configuration");
-        }
-
-        TaskDescription taskDescription = getTaskDescriptionRepository(
-                configurationContext).getTaskDescription(taskName);
-
-        if (taskDescription != null) {
-            if (log.isDebugEnabled()) {
-                log.debug("Returning a Task Description : " + taskDescription);
-
-            }
-            return taskDescription;
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug("No Task Description can be found with name :" + taskName);
-            }
-            return null;
-        }
-    }
-
-    /**
-     * This method search for a given Task which has already been added to the Task Description
-     * Repository and removes it.
-     *
-     * @param taskDescription             TaskDescription
-     * @param configurationContext ConfigurationContext
-     */
-    public void deleteTaskDescription(TaskDescription taskDescription, ConfigurationContext configurationContext) {
-        String taskName = null;
-        if (taskDescription != null) {
-            taskName = taskDescription.getName();
-            getTaskDescriptionRepository(configurationContext).removeTaskDescription(taskName);
-            getTaskScheduler(configurationContext).deleteTask(taskName, taskDescription.getGroup());
-
-            if (log.isDebugEnabled()) {
-                log.debug("Deleted TaskDescription : " + taskName + " from the configuration");
-            }
-        } else {
-            log.warn("Unable to delete the Task " + taskName
-                    + ",as it doesn't exist in the Repository");
-        }
-    }
-
-    /**
-     * Retrieves all Task Descriptions added to the Task Description Repository at a given instance.
-     *
-     * @param configurationContext ConfigurationContext
-     * @return TaskDescription Iterator
-     */
-    public Iterator<TaskDescription> getAllTaskDescriptions(
-            ConfigurationContext configurationContext) {
-        if (log.isDebugEnabled()) {
-            log.debug("Returning a All TaskDescription from the configuration");
-        }
-        return getTaskDescriptionRepository(configurationContext).getAllTaskDescriptions();
-    }
-
-    /**
-     * This method checks whether a particular Task has already been added to the Task Description
-     * Repository associated with the context of this execution and returns a flag indicating the
-     * existence.
-     *
-     * @param taskName             Name of the task to be searched
-     * @param configurationContext ConfigurationContext
-     * @return a boolean depending on the existence of a task
-     */
-    public boolean isContains(String taskName, ConfigurationContext configurationContext) {
-        return !getTaskDescriptionRepository(configurationContext).isUnique(taskName);
-    }
-
-    /**
-     * Returns the Carbon TaskDescriptionRepository instance that carries details of the added
-     * tasks for execution.
-     *
-     * @param configurationContext ConfigurationContext
-     * @return TaskDescriptionRepository
-     */
-    private synchronized TaskDescriptionRepository getTaskDescriptionRepository(
-            ConfigurationContext configurationContext) {
-        if (log.isDebugEnabled()) {
-            log.debug("Retrieving access to Task Description Repository");
-        }
-        return (TaskDescriptionRepository) configurationContext.getProperty(
-                TaskManager.CARBON_TASK_REPOSITORY);
-    }
-
-    /**
-     * Returns the carbon TaskScheduler associated with the context of scheduling the task execution
-     *
-     * @param configurationContext ConfigurationContext
-     * @return TaskScheduler
-     */
-    private synchronized TaskScheduler getTaskScheduler(ConfigurationContext configurationContext) {
-        if (log.isDebugEnabled()) {
-            log.debug("Retrieving access to Task Scheduler");
-        }
-        return (TaskScheduler) configurationContext.getProperty(
-                TaskManager.CARBON_TASK_SCHEDULER);
-    }
-
-    public void shutDown(ConfigurationContext configurationContext) {
-        if (log.isDebugEnabled()) {
-            log.debug("Starting to shut down tasks");
-        }
-
-//        getTaskDescriptionRepository(configurationContext).addTaskDescription(taskDescription);
-        getTaskScheduler(configurationContext).shutDown();
-
-        if (log.isDebugEnabled()) {
-            log.debug("All tasks shut down");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/290c6307/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/util/AutoscaleConstants.java
----------------------------------------------------------------------
diff --git a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/util/AutoscaleConstants.java b/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/util/AutoscaleConstants.java
deleted file mode 100644
index d4ae9ef..0000000
--- a/components/load-balancer/autoscaler/org.wso2.carbon.mediator.autoscale/4.1.3/src/main/java/org/wso2/carbon/mediator/autoscale/lbautoscale/util/AutoscaleConstants.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*                                                                             
- * Copyright 2004,2005 The Apache Software Foundation.                         
- *                                                                             
- * Licensed 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.wso2.carbon.mediator.autoscale.lbautoscale.util;
-
-/**
- * Constants
- */
-public final class AutoscaleConstants {
-    public static final String REQUEST_ID = "request.id";
-    public static final String APP_DOMAIN_CONTEXTS = "autoscale.app.domain.contexts";
-    public static final String TARGET_DOMAIN = "autoscale.target.domain";
-    public static final String TARGET_SUB_DOMAIN = "autoscale.target.sub.domain";
-    public static final String LOAD_BALANCER_CONFIG = "loadbalancer.conf";
-    
-    /**
-     * we use this to track the changes happen to request token list lengths.
-     */
-    public static final String IS_TOUCHED = "is_touched";
-    
-    /**
-     * We'll check whether a server is started up in every this much of time.
-     * (in milliseconds)
-     */
-    public static final int SERVER_START_UP_CHECK_TIME = 30000;
-    
-    /**
-     * We'll check whether an instance is left the cluster in every this much of time.
-     * (in milliseconds)
-     */
-    public static final int INSTANCE_REMOVAL_CHECK_TIME = 5000;
-
-    /**
-     * Name of the EC2 instance tag which if set on an instance, the autoscaler will not
-     * terminate such instance
-     */
-    public static final String AVOID_TERMINATION = "avoidTermination";
-
-    public static enum InstanceState {
-        RUNNING("running"), PENDING("pending"), TERMINATED("terminated"), SHUTTING_DOWN("shutting-down");
-
-        private String state;
-
-        InstanceState(String state) {
-            this.state = state;
-        }
-
-        public String getState() {
-            return state;
-        }
-    }
-
-}