You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2015/04/24 12:48:32 UTC

[1/9] stratos git commit: Add cluster monitor updating methods when the deployment policy is updated

Repository: stratos
Updated Branches:
  refs/heads/master 0c515aa01 -> c4627b6a2


Add cluster monitor updating methods when the deployment policy is updated


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

Branch: refs/heads/master
Commit: 528f5b56ebf105307c1109b21ac19e737a2ccbc9
Parents: 0c515aa
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:16:39 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:16:39 2015 +0530

----------------------------------------------------------------------
 .../services/impl/AutoscalerServiceImpl.java    | 123 ++++++++++++++++++-
 1 file changed, 121 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/528f5b56/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 94249af..8dafd81 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.stratos.autoscaler.services.impl;
 
+import org.apache.axis2.AxisFault;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -28,6 +29,10 @@ import org.apache.stratos.autoscaler.applications.parser.DefaultApplicationParse
 import org.apache.stratos.autoscaler.applications.pojo.*;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
 import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.InstanceContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
+import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
+import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
 import org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
@@ -45,11 +50,15 @@ import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.autoscaler.services.AutoscalerService;
 import org.apache.stratos.autoscaler.util.AutoscalerUtil;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidPartitionExceptionException;
+import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
 import org.apache.stratos.common.Properties;
 import org.apache.stratos.common.client.CloudControllerServiceClient;
 import org.apache.stratos.common.client.StratosManagerServiceClient;
 import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.partition.NetworkPartition;
+import org.apache.stratos.common.partition.Partition;
 import org.apache.stratos.common.util.CommonUtil;
 import org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp;
 import org.apache.stratos.manager.service.stub.domain.application.signup.ArtifactRepository;
@@ -158,13 +167,13 @@ public class AutoscalerServiceImpl implements AutoscalerService {
                     applicationContext.getApplicationId()));
         }
 
-        if(AutoscalerContext.getInstance().getApplicationContext(applicationId) == null) {
+        if (AutoscalerContext.getInstance().getApplicationContext(applicationId) == null) {
             String msg = "Application is not found as ApplicationContext. Please add application before updating it";
             log.error(msg);
             throw new ApplicationDefinitionException(msg);
         }
 
-        if(ApplicationHolder.getApplications().getApplication(applicationId) == null) {
+        if (ApplicationHolder.getApplications().getApplication(applicationId) == null) {
             String msg = "Application is not found as Application. Please add application before updating it";
             log.error(msg);
             throw new ApplicationDefinitionException(msg);
@@ -949,6 +958,116 @@ public class AutoscalerServiceImpl implements AutoscalerService {
             log.info("Successfully updated deployment policy: [deployment-policy-id] " + deploymentPolicyID);
         }
 
+        updateClusterMonitors(deploymentPolicy);
+
+    }
+
+    private void updateClusterMonitors(DeploymentPolicy deploymentPolicy) throws InvalidDeploymentPolicyException {
+
+        for (ClusterMonitor clusterMonitor : AutoscalerContext.getInstance().getClusterMonitors().values()) {
+
+            if (deploymentPolicy.getDeploymentPolicyID().equals(clusterMonitor.getDeploymentPolicyId())) {
+
+                for (NetworkPartition networkPartition : deploymentPolicy.getNetworkPartitions()) {
+
+                    ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext
+                            = clusterMonitor.getClusterContext().getNetworkPartitionCtxt(networkPartition.getId());
+
+                    try {
+                        addNewPartitionsToClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition,
+                                deploymentPolicy.getDeploymentPolicyID(), clusterMonitor.getClusterContext().getServiceId());
+                    } catch (RemoteException e) {
+                        String message = "Cluster monitor update failed for [deployment-policy] "
+                                + deploymentPolicy.getDeploymentPolicyID();
+                        log.error(message);
+                        throw new InvalidDeploymentPolicyException(message);
+                    } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
+
+                        String message = "Cluster monitor update failed for [deployment-policy] "
+                                + deploymentPolicy.getDeploymentPolicyID();
+                        log.error(message);
+                        throw new InvalidDeploymentPolicyException(message);
+                    } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException e) {
+
+                        String message = "Cluster monitor update failed for [deployment-policy] "
+                                + deploymentPolicy.getDeploymentPolicyID() + " [cluster] " + clusterMonitor.getClusterId();
+                        log.error(message);
+                        throw new InvalidDeploymentPolicyException(message);
+                    }
+
+                    removeOldPartitionsFromClusterMonitor(clusterLevelNetworkPartitionContext, networkPartition);
+
+                }
+            }
+        }
+    }
+
+    private void removeOldPartitionsFromClusterMonitor(ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext,
+                                                       NetworkPartition networkPartition) {
+
+        for (InstanceContext instanceContext : clusterLevelNetworkPartitionContext.getInstanceIdToInstanceContextMap().values()) {
+
+            ClusterInstanceContext clusterInstanceContext = (ClusterInstanceContext) instanceContext;
+
+            for (ClusterLevelPartitionContext clusterLevelPartitionContext : clusterInstanceContext.getPartitionCtxts()) {
+
+                if (null == networkPartition.getPartition(clusterLevelPartitionContext.getPartitionId())) {
+
+                    log.info(" +++ " + "We have found that this partition context which is in cluster monitor is removed in updated policy"
+                            + " clusterLevelPartitionContext.getPartitionId() " + clusterLevelPartitionContext.getPartitionId());
+                    //We have found that this partition context which is in cluster monitor is removed in updated policy
+
+                    while (clusterLevelPartitionContext.getActiveMembers().size() != 0) {
+
+                        MemberContext member = clusterLevelPartitionContext.getActiveMembers().get(0);
+                        log.info(" +++ " + " Active member to be terminate " + member.getMemberId());
+                        clusterLevelPartitionContext.moveActiveMemberToTerminationPendingMembers(member.getMemberId());
+                    }
+
+                    while (clusterLevelPartitionContext.getPendingMembers().size() != 0) {
+
+                        MemberContext member = clusterLevelPartitionContext.getPendingMembers().get(0);
+                        log.info(" +++ " + " Pending member to be terminate " + member.getMemberId());
+                        clusterLevelPartitionContext.movePendingMemberToObsoleteMembers(member.getMemberId());
+                    }
+                    clusterLevelPartitionContext.setIsObsoletePartition(true);
+                }
+            }
+        }
+    }
+
+    private void addNewPartitionsToClusterMonitor(ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext,
+                                                  NetworkPartition networkPartition, String deploymentPolicyID,
+                                                  String cartridgeType) throws RemoteException,
+            CloudControllerServiceInvalidPartitionExceptionException,
+            CloudControllerServiceInvalidCartridgeTypeExceptionException {
+
+        boolean validationOfNetworkPartitionRequired = false;
+        for (Partition partition : networkPartition.getPartitions()) {
+
+            //Iterating through active instances
+            for (InstanceContext instanceContext : clusterLevelNetworkPartitionContext.getInstanceIdToInstanceContextMap().values()) {
+
+                ClusterInstanceContext clusterInstanceContext = (ClusterInstanceContext) instanceContext;
+                if (null == clusterInstanceContext.getPartitionCtxt(partition.getId())) {
+
+                    log.info(" +++ " + "We have found that this partition which is in deployment policy/network partition is new"
+                            + " clusterLevelPartitionContext.getPartitionId() " + partition.getId());
+
+                    //We have found that this partition which is in deployment policy/network partition is new
+                    ClusterLevelPartitionContext clusterLevelPartitionContext = new ClusterLevelPartitionContext(
+                            partition, networkPartition.getId(), deploymentPolicyID);
+                    validationOfNetworkPartitionRequired = true;
+                    clusterInstanceContext.addPartitionCtxt(clusterLevelPartitionContext);
+                }
+            }
+        }
+
+        if (validationOfNetworkPartitionRequired) {
+
+            CloudControllerServiceClient.getInstance().validateNetworkPartitionOfDeploymentPolicy(cartridgeType,
+                    clusterLevelNetworkPartitionContext.getId());
+        }
     }
 
     @Override


[9/9] stratos git commit: Update drools files with obsolete partition check

Posted by la...@apache.org.
Update drools files with obsolete partition check


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

Branch: refs/heads/master
Commit: c4627b6a217d6b179351b6df8ddae8029671e6aa
Parents: 779c643
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:44:30 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:44:30 2015 +0530

----------------------------------------------------------------------
 .../modules/distribution/src/main/conf/drools/maxcheck.drl        | 2 ++
 .../modules/distribution/src/main/conf/drools/mincheck.drl        | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c4627b6a/products/stratos/modules/distribution/src/main/conf/drools/maxcheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/drools/maxcheck.drl b/products/stratos/modules/distribution/src/main/conf/drools/maxcheck.drl
index 4d5668b..08cad47 100755
--- a/products/stratos/modules/distribution/src/main/conf/drools/maxcheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/maxcheck.drl
@@ -53,6 +53,8 @@ dialect "mvel"
 
         partitionContext : ClusterLevelPartitionContext() from clusterInstanceContext.getPartitionCtxtsAsAnArray()
 
+        eval(!partitionContext.isObsoletePartition)
+
         eval(log.debug("[max-check] [network-partition] " + clusterInstanceContext.getNetworkPartitionId()
         + " [cluster-instance] " + clusterInstanceContext.getId() + " [cluster] " + clusterId + " [partition] "
         + partitionContext.getPartitionId() + " Activated member count: " + partitionContext.getActiveInstanceCount()

http://git-wip-us.apache.org/repos/asf/stratos/blob/c4627b6a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
index 1be412a..96b60da 100755
--- a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
@@ -79,7 +79,8 @@ dialect "mvel"
         while(count != additionalInstances && partitionsAvailable){
 
             ClusterLevelPartitionContext partitionContext =  (ClusterLevelPartitionContext)partitionAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
-             if(partitionContext != null){
+
+            if(partitionContext != null){
 
                 log.info("[min-check] Partition available, hence trying to spawn an instance to fulfil minimum count!" + " [cluster] " + clusterId);
                 log.debug("[min-check] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId);


[6/9] stratos git commit: Update cluster monitor to clean obsolete partition context when removed

Posted by la...@apache.org.
Update cluster monitor to clean obsolete partition context when removed


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

Branch: refs/heads/master
Commit: e30dfbb839df6b5e47f0fe64f1194ba5cfd97fec
Parents: 4dab322
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:40:54 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:40:54 2015 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/monitor/MonitorFactory.java   |  5 ++---
 .../autoscaler/monitor/cluster/ClusterMonitor.java   | 15 +++++++++++----
 2 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/e30dfbb8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
index a531d59..8446bf6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
@@ -273,9 +273,8 @@ public class MonitorFactory {
                     }
 
                     try {
-                        org.apache.stratos.cloud.controller.stub.domain.Partition[] partitions
-                                = convertPartitionsToCCPartitions(partitionList.toArray(new Partition[partitionList.size()]));
-                        CloudControllerServiceClient.getInstance().validateDeploymentPolicy(serviceName, networkPartition.getId());
+
+                        CloudControllerServiceClient.getInstance().validateNetworkPartitionOfDeploymentPolicy(serviceName, networkPartition.getId());
                     } catch (Exception e) {
                         String msg = String.format("Error while validating deployment policy from cloud controller [network-partition-id] %s", networkPartition.getId());
                         log.error(msg, e);

http://git-wip-us.apache.org/repos/asf/stratos/blob/e30dfbb8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index da3aa31..cba4871 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -95,7 +95,7 @@ public class ClusterMonitor extends Monitor implements Runnable {
     protected FactHandle dependentScaleCheckFactHandle;
     protected boolean hasFaultyMember = false;
     protected boolean stop = false;
-    protected AbstractClusterContext clusterContext;
+    protected ClusterContext clusterContext;
     protected StatefulKnowledgeSession minCheckKnowledgeSession;
     protected StatefulKnowledgeSession maxCheckKnowledgeSession;
     protected StatefulKnowledgeSession obsoleteCheckKnowledgeSession;
@@ -113,7 +113,7 @@ public class ClusterMonitor extends Monitor implements Runnable {
     private boolean groupScalingEnabledSubtree;
 
     private static final Log log = LogFactory.getLog(ClusterMonitor.class);
-    private Map<String, ClusterLevelNetworkPartitionContext> networkPartitionIdToClusterLevelNetworkPartitionCtxts;
+        private Map<String, ClusterLevelNetworkPartitionContext> networkPartitionIdToClusterLevelNetworkPartitionCtxts;
     private boolean hasPrimary;
     private float scalingFactorBasedOnDependencies = 1.0f;
     private String deploymentPolicyId;
@@ -349,11 +349,11 @@ public class ClusterMonitor extends Monitor implements Runnable {
         this.dependentScaleCheckKnowledgeSession = dependentScaleCheckKnowledgeSession;
     }
 
-    public AbstractClusterContext getClusterContext() {
+    public ClusterContext getClusterContext() {
         return clusterContext;
     }
 
-    public void setClusterContext(AbstractClusterContext clusterContext) {
+    public void setClusterContext(ClusterContext clusterContext) {
         this.clusterContext = clusterContext;
     }
 
@@ -608,6 +608,13 @@ public class ClusterMonitor extends Monitor implements Runnable {
                                 getObsoleteCheckKnowledgeSession().setGlobal("clusterId", clusterId);
                                 obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluate(
                                         getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, partitionContext);
+
+                                if (partitionContext.isObsoletePartition()
+                                        && partitionContext.getTerminationPendingMembers().size() == 0
+                                        && partitionContext.getObsoletedMembers().size() == 0) {
+
+                                    instanceContext.removePartitionCtxt(partitionContext.getPartition().getId());
+                                }
                             }
                         };
                         executorService.execute(monitoringRunnable);


[8/9] stratos git commit: Add a meaningful name to network partition verification method in CC client

Posted by la...@apache.org.
Add a meaningful name to network partition verification method in CC client


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

Branch: refs/heads/master
Commit: 779c643b32121c4164fcdc55d91dc7f7da01fc84
Parents: 82f81c7
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:43:56 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:43:56 2015 +0530

----------------------------------------------------------------------
 .../apache/stratos/common/client/CloudControllerServiceClient.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/779c643b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
index 7d226eb..c9ddbf7 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
@@ -212,7 +212,7 @@ public class CloudControllerServiceClient {
         return stub.updateKubernetesHost(kubernetesHost);
     }
 
-    public void validateDeploymentPolicy(String cartridgeType, String networkPartitionId)
+    public void validateNetworkPartitionOfDeploymentPolicy(String cartridgeType, String networkPartitionId)
             throws RemoteException,
             CloudControllerServiceInvalidPartitionExceptionException,
             CloudControllerServiceInvalidCartridgeTypeExceptionException {


[2/9] stratos git commit: Handle obsolete partition contexts in partition selection algorithm

Posted by la...@apache.org.
Handle obsolete partition contexts in partition selection algorithm


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

Branch: refs/heads/master
Commit: 17cfb01907caddcdefbea303829aa80cc4c1edaf
Parents: 528f5b5
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:17:53 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:17:53 2015 +0530

----------------------------------------------------------------------
 .../autoscaler/algorithms/partition/OneAfterAnother.java       | 5 +++--
 .../stratos/autoscaler/algorithms/partition/RoundRobin.java    | 6 ++++--
 2 files changed, 7 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/17cfb019/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java
index a6b6386..226e57f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/OneAfterAnother.java
@@ -39,7 +39,7 @@ public class OneAfterAnother implements PartitionAlgorithm {
 
         for (PartitionContext partitionContext : partitionContexts) {
 
-            if (partitionContext.getNonTerminatedMemberCount() < partitionContext.getMax()) {
+            if (partitionContext.getNonTerminatedMemberCount() < partitionContext.getMax() && !partitionContext.isObsoletePartition()) {
 
                 if (log.isDebugEnabled()) {
                     log.debug(String.format("[one-after-another algorithm] [scale-up] [partition] %s has space to create " +
@@ -57,7 +57,8 @@ public class OneAfterAnother implements PartitionAlgorithm {
 
         for (int partitionIndex = partitionContexts.length - 1; partitionIndex >= 0; partitionIndex--) {
 
-            if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > 0) {
+            if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > 0
+                    && !partitionContexts[partitionIndex].isObsoletePartition()) {
 
                 if (log.isDebugEnabled()) {
                     log.debug(String.format("[one-after-another algorithm] [scale-down] [partition] %s has members that" +

http://git-wip-us.apache.org/repos/asf/stratos/blob/17cfb019/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java
index d274d0f..1ced903 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/partition/RoundRobin.java
@@ -50,7 +50,8 @@ public class RoundRobin implements PartitionAlgorithm {
                 break;
             }
 
-            if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() < lowestInstanceCount) {
+            if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() < lowestInstanceCount
+                    && !partitionContexts[partitionIndex].isObsoletePartition()) {
                 lowestInstanceCount = partitionContexts[partitionIndex].getNonTerminatedMemberCount();
                 selectedIndex = partitionIndex;
             }
@@ -84,7 +85,8 @@ public class RoundRobin implements PartitionAlgorithm {
 
         for (int partitionIndex = partitionContexts.length - 1; partitionIndex >= 0; partitionIndex--) {
 
-            if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > highestInstanceCount) {
+            if (partitionContexts[partitionIndex].getNonTerminatedMemberCount() > highestInstanceCount
+                    && !partitionContexts[partitionIndex].isObsoletePartition()) {
 
                 highestInstanceCount = partitionContexts[partitionIndex].getNonTerminatedMemberCount();
                 selectedIndex = partitionIndex;


[5/9] stratos git commit: Remove unnecesarry logs

Posted by la...@apache.org.
Remove unnecesarry logs


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

Branch: refs/heads/master
Commit: 4dab3225b8689fbb6c9414dd31f55c622764c0c5
Parents: a5af78f
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:38:45 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:38:45 2015 +0530

----------------------------------------------------------------------
 .../autoscaler/services/impl/AutoscalerServiceImpl.java       | 7 -------
 1 file changed, 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/4dab3225/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 8dafd81..1c8bbf2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -1013,21 +1013,17 @@ public class AutoscalerServiceImpl implements AutoscalerService {
 
                 if (null == networkPartition.getPartition(clusterLevelPartitionContext.getPartitionId())) {
 
-                    log.info(" +++ " + "We have found that this partition context which is in cluster monitor is removed in updated policy"
-                            + " clusterLevelPartitionContext.getPartitionId() " + clusterLevelPartitionContext.getPartitionId());
                     //We have found that this partition context which is in cluster monitor is removed in updated policy
 
                     while (clusterLevelPartitionContext.getActiveMembers().size() != 0) {
 
                         MemberContext member = clusterLevelPartitionContext.getActiveMembers().get(0);
-                        log.info(" +++ " + " Active member to be terminate " + member.getMemberId());
                         clusterLevelPartitionContext.moveActiveMemberToTerminationPendingMembers(member.getMemberId());
                     }
 
                     while (clusterLevelPartitionContext.getPendingMembers().size() != 0) {
 
                         MemberContext member = clusterLevelPartitionContext.getPendingMembers().get(0);
-                        log.info(" +++ " + " Pending member to be terminate " + member.getMemberId());
                         clusterLevelPartitionContext.movePendingMemberToObsoleteMembers(member.getMemberId());
                     }
                     clusterLevelPartitionContext.setIsObsoletePartition(true);
@@ -1051,9 +1047,6 @@ public class AutoscalerServiceImpl implements AutoscalerService {
                 ClusterInstanceContext clusterInstanceContext = (ClusterInstanceContext) instanceContext;
                 if (null == clusterInstanceContext.getPartitionCtxt(partition.getId())) {
 
-                    log.info(" +++ " + "We have found that this partition which is in deployment policy/network partition is new"
-                            + " clusterLevelPartitionContext.getPartitionId() " + partition.getId());
-
                     //We have found that this partition which is in deployment policy/network partition is new
                     ClusterLevelPartitionContext clusterLevelPartitionContext = new ClusterLevelPartitionContext(
                             partition, networkPartition.getId(), deploymentPolicyID);


[4/9] stratos git commit: Update contexes to handle parition addition and removal

Posted by la...@apache.org.
Update contexes to handle parition addition and removal


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

Branch: refs/heads/master
Commit: a5af78f5b3d7982805e087534205dd75e052edb8
Parents: 546de6c
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:21:08 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:21:08 2015 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/context/cluster/ClusterContext.java       | 3 ++-
 .../autoscaler/context/cluster/ClusterInstanceContext.java       | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a5af78f5/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
index 2a6b4a0..a200edc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContext.java
@@ -119,7 +119,8 @@ public class ClusterContext extends AbstractClusterContext {
         ClusterLevelNetworkPartitionContext networkPartitionContext = null;
         ClusterInstance clusterInstance = cluster.getInstanceContexts(instanceId);
 
-        String deploymentPolicyName = AutoscalerUtil.getDeploymentPolicyIdByAlias(cluster.getAppId(), AutoscalerUtil.getAliasFromClusterId(clusterId));
+        String deploymentPolicyName = AutoscalerUtil.getDeploymentPolicyIdByAlias(cluster.getAppId(),
+                AutoscalerUtil.getAliasFromClusterId(clusterId));
         DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyName);
 
         if (networkPartitionCtxts.containsKey(clusterInstance.getNetworkPartitionId())) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a5af78f5/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
index 8edb71b..67787f5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java
@@ -121,6 +121,10 @@ public class ClusterInstanceContext extends InstanceContext {
         this.partitionCtxts.add(ctxt);
     }
 
+    public void removePartitionCtxt(String partitionId) {
+        this.partitionCtxts.remove(partitionId);
+    }
+
     public ClusterLevelPartitionContext getPartitionCtxt(String id) {
 
         for (ClusterLevelPartitionContext partitionContext : partitionCtxts) {


[3/9] stratos git commit: Fix formatting issues in DefaultApplicationParser.java

Posted by la...@apache.org.
Fix formatting issues in DefaultApplicationParser.java


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

Branch: refs/heads/master
Commit: 546de6caa42c20f130afb7a5be4ce1c62c72fef7
Parents: 17cfb01
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:19:39 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:19:39 2015 +0530

----------------------------------------------------------------------
 .../autoscaler/applications/parser/DefaultApplicationParser.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/546de6ca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index 5ededa5..1c83eff 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -613,7 +613,7 @@ public class DefaultApplicationParser implements ApplicationParser {
             if (group.getGroups() != null) {
                 for (Group childGroup : group.getGroups()) {
                     ClusterDataHolder dataHolder = findClusterDataInGroup(childGroup, cartridgeType);
-                    if(dataHolder != null) {
+                    if (dataHolder != null) {
                         return dataHolder;
                     }
                 }


[7/9] stratos git commit: Formatting autoscaler component

Posted by la...@apache.org.
Formatting autoscaler component


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

Branch: refs/heads/master
Commit: 82f81c7824123e024ce10085b153054ec801f62e
Parents: e30dfbb
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Apr 24 14:42:25 2015 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Apr 24 14:42:25 2015 +0530

----------------------------------------------------------------------
 .../context/partition/PartitionContext.java     | 10 ++++
 .../internal/AutoscalerServiceComponent.java    |  3 +-
 .../monitor/component/GroupMonitor.java         | 10 ++--
 .../autoscaler/registry/RegistryManager.java    |  2 +-
 .../stratos/autoscaler/util/AutoscalerUtil.java | 60 ++++++++++----------
 5 files changed, 47 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/82f81c78/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
index 9849702..8e3d6c7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
@@ -39,6 +39,7 @@ public abstract class PartitionContext implements Serializable {
     private Partition partition;
     private String deploymentPolicyId;
     private String networkPartitionId;
+    private boolean isObsoletePartition = false;
     // properties
     private Properties properties;
 
@@ -98,4 +99,13 @@ public abstract class PartitionContext implements Serializable {
                 .getNetworkPartitionByNetworkPartitionId(networkPartitionId)
                 .getPartition(partitionId).getPartitionMax();
     }
+
+    public void setIsObsoletePartition(boolean isObsoletePartition) {
+        this.isObsoletePartition = isObsoletePartition;
+    }
+
+    public boolean isObsoletePartition() {
+        return isObsoletePartition;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/82f81c78/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
index d161398..e3641b6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServiceComponent.java
@@ -189,8 +189,7 @@ public class AutoscalerServiceComponent {
         }
 
 
-
-                // Add application policies to information model
+        // Add application policies to information model
         List<ApplicationPolicy> applicationPolicies = RegistryManager.getInstance().
                 retrieveApplicationPolicies();
         Iterator<ApplicationPolicy> applicationPolicyIterator = applicationPolicies.iterator();

http://git-wip-us.apache.org/repos/asf/stratos/blob/82f81c78/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 1de7e90..e8da232 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
@@ -142,13 +142,13 @@ public class GroupMonitor extends ParentComponentMonitor {
                     }
 
                     int nonTerminatedInstancesCount = networkPartitionContext.
-                                                getNonTerminatedInstancesCount();
-                    int minInstances = ((GroupLevelNetworkPartitionContext)networkPartitionContext).
+                            getNonTerminatedInstancesCount();
+                    int minInstances = ((GroupLevelNetworkPartitionContext) networkPartitionContext).
                             getMinInstanceCount();
-                    if(nonTerminatedInstancesCount < minInstances) {
+                    if (nonTerminatedInstancesCount < minInstances) {
                         int instancesToBeCreated = minInstances - nonTerminatedInstancesCount;
-                        for(int i = 0; i < instancesToBeCreated; i++) {
-                            for(InstanceContext parentInstanceContext : parent.
+                        for (int i = 0; i < instancesToBeCreated; i++) {
+                            for (InstanceContext parentInstanceContext : parent.
                                     getNetworkPartitionContext(networkPartitionContext.getId()).
                                     getInstanceIdToInstanceContextMap().values()) {
                                 //Creating new group instance based on the existing parent instances

http://git-wip-us.apache.org/repos/asf/stratos/blob/82f81c78/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 771f362..2a64f25 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -401,7 +401,7 @@ public class RegistryManager {
      * @return all the deployment policies
      */
     public List<DeploymentPolicy> retrieveDeploymentPolicies() {
-        try{
+        try {
             startTenantFlow();
             List<DeploymentPolicy> depPolicyList = new ArrayList<DeploymentPolicy>();
             RegistryManager registryManager = RegistryManager.getInstance();

http://git-wip-us.apache.org/repos/asf/stratos/blob/82f81c78/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 1548e98..3e6c134 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -545,13 +545,13 @@ public class AutoscalerUtil {
                         aliasToDeploymentPolicyIdMap.put(groupContext.getAlias(), deploymentPolicyId);
                         if (groupContext.getCartridgeContexts() != null && groupContext.getCartridgeContexts().length != 0) {
                             setDeploymentPolicyIdToChildCartridgeContexts(aliasToDeploymentPolicyIdMap,
-                                                                            deploymentPolicyId,
+                                    deploymentPolicyId,
                                     groupContext.getCartridgeContexts());
                         }
                         if (groupContext.getGroupContexts() != null && groupContext.getGroupContexts().length != 0) {
                             setDeploymentPolicyIdToChildGroupContexts(aliasToDeploymentPolicyIdMap,
-                                                                        deploymentPolicyId,
-                                                                        groupContext.getGroupContexts());
+                                    deploymentPolicyId,
+                                    groupContext.getGroupContexts());
                         }
 
                     }
@@ -562,13 +562,13 @@ public class AutoscalerUtil {
 
     private static void setDeploymentPolicyIdToChildCartridgeContexts(
             Map<String, String> aliasToDeploymentPolicyIdMap, String deploymentPolicyId,
-                                                            CartridgeContext[] cartridgeContexts) {
+            CartridgeContext[] cartridgeContexts) {
 
         if (cartridgeContexts != null && cartridgeContexts.length != 0) {
             for (CartridgeContext cartridgeContext : cartridgeContexts) {
                 if (cartridgeContext != null) {
                     aliasToDeploymentPolicyIdMap.put(cartridgeContext.getSubscribableInfoContext().getAlias(),
-                                                        deploymentPolicyId);
+                            deploymentPolicyId);
                 }
             }
         }
@@ -582,13 +582,13 @@ public class AutoscalerUtil {
                 if (groupContext != null) {
                     if (groupContext.getCartridgeContexts() != null && groupContext.getCartridgeContexts().length != 0) {
                         setDeploymentPolicyIdToChildCartridgeContexts(aliasToDeploymentPolicyIdMap,
-                                                                deploymentPolicyId,
-                                                                groupContext.getCartridgeContexts());
+                                deploymentPolicyId,
+                                groupContext.getCartridgeContexts());
                     }
                     if (groupContext.getGroupContexts() != null && groupContext.getGroupContexts().length != 0) {
                         setDeploymentPolicyIdToChildGroupContexts(aliasToDeploymentPolicyIdMap,
-                                                                deploymentPolicyId,
-                                                                groupContext.getGroupContexts());
+                                deploymentPolicyId,
+                                groupContext.getGroupContexts());
                     }
                 }
             }
@@ -623,7 +623,7 @@ public class AutoscalerUtil {
         String algorithm = applicationPolicy.getAlgorithm();
         if (algorithm == null || StringUtils.isBlank(algorithm)) {
             String msg = "Invalid Application Policy. Cause -> Network " +
-                                    "partition algorithm is null or empty";
+                    "partition algorithm is null or empty";
             log.error(msg);
             throw new InvalidApplicationPolicyException(msg);
         }
@@ -662,9 +662,9 @@ public class AutoscalerUtil {
 
             // network partitions should be added already
             if (null == CloudControllerServiceClient.getInstance().
-                                                getNetworkPartition(networkPartitionId)) {
+                    getNetworkPartition(networkPartitionId)) {
                 String msg = String.format("Invalid Application Policy. "
-                        + "Cause -> Network partition not found for network-partition-id : %s",
+                                + "Cause -> Network partition not found for network-partition-id : %s",
                         networkPartitionId);
                 log.error(msg);
                 throw new InvalidApplicationPolicyException(msg);
@@ -691,7 +691,7 @@ public class AutoscalerUtil {
                                     // network-partition-id can't be null or empty
                                     if (null == networkPartitionId || networkPartitionId.isEmpty()) {
                                         String msg = String.format("Invalid Application Policy. "
-                                                + "Cause -> Invalid network-partition-id : %s",
+                                                        + "Cause -> Invalid network-partition-id : %s",
                                                 networkPartitionId);
                                         log.error(msg);
                                         throw new InvalidApplicationPolicyException(msg);
@@ -767,30 +767,30 @@ public class AutoscalerUtil {
     }
 
     public void updateApplicationsTopology(Application application)
-                                                throws  ApplicationDefinitionException{
+            throws ApplicationDefinitionException {
         Application existingApplication = ApplicationHolder.getApplications().
-                                                getApplication(application.getUniqueIdentifier());
+                getApplication(application.getUniqueIdentifier());
         //Retrieve all the groups in order to update it
         Set<Group> existingGroups = existingApplication.getAllGroupsRecursively();
 
         //updating all the groups by traversing the existing application
-        for(Group existingGroup : existingGroups) {
+        for (Group existingGroup : existingGroups) {
             Group newGroup = application.getGroupRecursively(existingGroup.getUniqueIdentifier());
-            if(newGroup != null) {
+            if (newGroup != null) {
                 //Finding the GroupMonitor based on ApplicationMonitor
                 GroupMonitor groupMonitor = (GroupMonitor) AutoscalerContext.getInstance().
                         getAppMonitor(application.getUniqueIdentifier()).
                         findGroupMonitorWithId(existingGroup.getUniqueIdentifier());
                 //Updating the GroupMonitor
-                for(NetworkPartitionContext networkPartitionContext : groupMonitor.
+                for (NetworkPartitionContext networkPartitionContext : groupMonitor.
                         getNetworkPartitionCtxts().values()) {
-                    ((GroupLevelNetworkPartitionContext)networkPartitionContext).
+                    ((GroupLevelNetworkPartitionContext) networkPartitionContext).
                             setMinInstanceCount(newGroup.getGroupMinInstances());
-                    ((GroupLevelNetworkPartitionContext)networkPartitionContext).
+                    ((GroupLevelNetworkPartitionContext) networkPartitionContext).
                             setMaxInstanceCount(newGroup.getGroupMaxInstances());
                 }
 
-                try{
+                try {
                     ApplicationHolder.acquireWriteLock();
                     //update the min and max of Group instances
                     existingGroup.setGroupMinInstances(newGroup.getGroupMinInstances());
@@ -810,24 +810,24 @@ public class AutoscalerUtil {
 
     }
 
-    public void updateClusterMonitor(Application application) throws ApplicationDefinitionException{
+    public void updateClusterMonitor(Application application) throws ApplicationDefinitionException {
         Application existingApplication = ApplicationHolder.getApplications().
                 getApplication(application.getUniqueIdentifier());
 
         Set<ClusterDataHolder> clusterDataHolders = application.getClusterDataRecursively();
 
-        for(ClusterDataHolder clusterDataHolder : clusterDataHolders) {
+        for (ClusterDataHolder clusterDataHolder : clusterDataHolders) {
             ClusterMonitor clusterMonitor = AutoscalerContext.getInstance().
-                                            getClusterMonitor(clusterDataHolder.getClusterId());
-            if(clusterMonitor != null) {
-                for(ClusterLevelNetworkPartitionContext networkPartitionContext :
+                    getClusterMonitor(clusterDataHolder.getClusterId());
+            if (clusterMonitor != null) {
+                for (ClusterLevelNetworkPartitionContext networkPartitionContext :
                         clusterMonitor.getNetworkPartitionCtxts()) {
-                    for(InstanceContext instanceContext :
+                    for (InstanceContext instanceContext :
                             networkPartitionContext.getInstanceIdToInstanceContextMap().values()) {
                         //Updating the min and max instances of cluster instance context
-                        ((ClusterInstanceContext)instanceContext).
+                        ((ClusterInstanceContext) instanceContext).
                                 setMinInstanceCount(clusterDataHolder.getMinInstances());
-                        ((ClusterInstanceContext)instanceContext).
+                        ((ClusterInstanceContext) instanceContext).
                                 setMaxInstanceCount(clusterDataHolder.getMaxInstances());
 
                         try {
@@ -836,7 +836,7 @@ public class AutoscalerUtil {
                             ClusterDataHolder existingClusterDataHolder = existingApplication.
                                     getClusterDataHolderRecursivelyByAlias(
                                             AutoscalerUtil.getAliasFromClusterId(
-                                                            clusterDataHolder.getClusterId()));
+                                                    clusterDataHolder.getClusterId()));
                             existingClusterDataHolder.setMinInstances(clusterDataHolder.
                                     getMinInstances());
                             existingClusterDataHolder.setMaxInstances(clusterDataHolder.