Repository: stratos Updated Branches: refs/heads/master ac02c043c -> 10cf2da77
adding application instance scale down support based on available network-partition Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/10cf2da7 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/10cf2da7 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/10cf2da7 Branch: refs/heads/master Commit: 10cf2da77ff69efa1180ca0a288843a5a5a0a263 Parents: ac02c04 Author: reka <[email protected]> Authored: Tue May 12 21:17:57 2015 +0530 Committer: reka <[email protected]> Committed: Tue May 12 21:21:17 2015 +0530 ---------------------------------------------------------------------- .../algorithms/NetworkPartitionAlgorithm.java | 9 +- .../networkpartition/AllAtOnceAlgorithm.java | 25 ++- .../NetworkPartitionAlgorithmContext.java | 14 +- .../OneAfterAnotherAlgorithm.java | 169 ++++++++++++++----- .../monitor/component/ApplicationMonitor.java | 53 +++++- .../services/impl/AutoscalerServiceImpl.java | 25 ++- 6 files changed, 233 insertions(+), 62 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/10cf2da7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/NetworkPartitionAlgorithm.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/NetworkPartitionAlgorithm.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/NetworkPartitionAlgorithm.java index e881452..aa2f925 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/NetworkPartitionAlgorithm.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/NetworkPartitionAlgorithm.java @@ -27,8 +27,13 @@ public interface NetworkPartitionAlgorithm { /** * Get a list network partitions in which application instances to be spawned * - * @param networkPartitionAlgorithmContext the {@link NetworkPartitionAlgorithmContext} + * @param networkPartitionAlgorithmContext the {@link org.apache.stratos.autoscaler.algorithms.networkpartition.NetworkPartitionAlgorithmContext} * @return list of network partition ids */ - public List<String> getNextNetworkPartitions(NetworkPartitionAlgorithmContext networkPartitionAlgorithmContext); + public List getNextNetworkPartitions(NetworkPartitionAlgorithmContext + networkPartitionAlgorithmContext); + + + public List<String> getDefaultNetworkPartitions(NetworkPartitionAlgorithmContext + networkPartitionAlgorithmContext); } http://git-wip-us.apache.org/repos/asf/stratos/blob/10cf2da7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/AllAtOnceAlgorithm.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/AllAtOnceAlgorithm.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/AllAtOnceAlgorithm.java index 8cd7268..1966d0c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/AllAtOnceAlgorithm.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/AllAtOnceAlgorithm.java @@ -20,6 +20,7 @@ package org.apache.stratos.autoscaler.algorithms.networkpartition; import edu.emory.mathcs.backport.java.util.Arrays; import org.apache.stratos.autoscaler.algorithms.NetworkPartitionAlgorithm; +import org.apache.stratos.autoscaler.pojo.policy.PolicyManager; import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy; import java.util.List; @@ -33,7 +34,29 @@ public class AllAtOnceAlgorithm implements NetworkPartitionAlgorithm { return null; } - ApplicationPolicy applicationPolicy = networkPartitionAlgorithmContext.getApplicationPolicy(); + ApplicationPolicy applicationPolicy = PolicyManager.getInstance().getApplicationPolicy( + networkPartitionAlgorithmContext.getApplicationPolicyId()); + if (applicationPolicy == null) { + return null; + } + + String[] networkPartitions = applicationPolicy.getNetworkPartitions(); + if (networkPartitions == null || networkPartitions.length == 0) { + return null; + } + + return Arrays.asList(networkPartitions); + } + + @Override + public List<String> getDefaultNetworkPartitions(NetworkPartitionAlgorithmContext + networkPartitionAlgorithmContext) { + if (networkPartitionAlgorithmContext == null) { + return null; + } + + ApplicationPolicy applicationPolicy = PolicyManager.getInstance().getApplicationPolicy( + networkPartitionAlgorithmContext.getApplicationPolicyId()); if (applicationPolicy == null) { return null; } http://git-wip-us.apache.org/repos/asf/stratos/blob/10cf2da7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/NetworkPartitionAlgorithmContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/NetworkPartitionAlgorithmContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/NetworkPartitionAlgorithmContext.java index 53605f5..b605d4f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/NetworkPartitionAlgorithmContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/NetworkPartitionAlgorithmContext.java @@ -27,13 +27,13 @@ public class NetworkPartitionAlgorithmContext implements Serializable { private static final long serialVersionUID = -1539453541207312793L; private String applicationId; - private ApplicationPolicy applicationPolicy; + private String applicationPolicyId; private AtomicInteger currentNetworkPartitionIndex; - public NetworkPartitionAlgorithmContext(String applicationId, ApplicationPolicy applicationPolicy, + public NetworkPartitionAlgorithmContext(String applicationId, String applicationPolicyId, int currentNetworkPartitionIndex) { this.applicationId = applicationId; - this.applicationPolicy = applicationPolicy; + this.applicationPolicyId = applicationPolicyId; this.currentNetworkPartitionIndex = new AtomicInteger(currentNetworkPartitionIndex); } @@ -41,11 +41,11 @@ public class NetworkPartitionAlgorithmContext implements Serializable { return currentNetworkPartitionIndex; } - public ApplicationPolicy getApplicationPolicy() { - return applicationPolicy; - } - public String getApplicationId() { return applicationId; } + + public String getApplicationPolicyId() { + return applicationPolicyId; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/10cf2da7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/OneAfterAnotherAlgorithm.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/OneAfterAnotherAlgorithm.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/OneAfterAnotherAlgorithm.java index d70d028..c9f6970 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/OneAfterAnotherAlgorithm.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/algorithms/networkpartition/OneAfterAnotherAlgorithm.java @@ -18,22 +18,27 @@ */ package org.apache.stratos.autoscaler.algorithms.networkpartition; -import edu.emory.mathcs.backport.java.util.Arrays; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.algorithms.NetworkPartitionAlgorithm; +import org.apache.stratos.autoscaler.pojo.policy.PolicyManager; import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy; import org.apache.stratos.common.constants.StratosConstants; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +/** + * One after algorithm for the network-partition or groups + */ public class OneAfterAnotherAlgorithm implements NetworkPartitionAlgorithm { private static final Log log = LogFactory.getLog(NetworkPartitionAlgorithm.class); @Override - public List<String> getNextNetworkPartitions(NetworkPartitionAlgorithmContext networkPartitionAlgorithmContext) { + public List<String> getNextNetworkPartitions(NetworkPartitionAlgorithmContext + networkPartitionAlgorithmContext) { if (networkPartitionAlgorithmContext == null) { if (log.isWarnEnabled()) { @@ -46,78 +51,92 @@ public class OneAfterAnotherAlgorithm implements NetworkPartitionAlgorithm { String applicationId = networkPartitionAlgorithmContext.getApplicationId(); if (applicationId == null) { if (log.isWarnEnabled()) { - String msg = "Application id is null in etwork partition algorithm context"; + String msg = "Application id is null in network partition algorithm context"; log.warn(msg); } return null; } - ApplicationPolicy applicationPolicy = networkPartitionAlgorithmContext.getApplicationPolicy(); + ApplicationPolicy applicationPolicy = PolicyManager.getInstance().getApplicationPolicy( + networkPartitionAlgorithmContext.getApplicationPolicyId()); if (applicationPolicy == null) { if (log.isWarnEnabled()) { - String msg = String.format("No application policy found in network partition algorithm context [application-id] %s", applicationId); + String msg = String.format("No application policy found in network partition " + + "algorithm context [application-id] %s", applicationId); log.warn(msg); } return null; } - String applicatioinPolicyId = applicationPolicy.getId(); + String applicationPolicyId = applicationPolicy.getId(); String[] networkPartitionGroups = applicationPolicy.getNetworkPartitionGroups(); if (networkPartitionGroups != null && networkPartitionGroups.length != 0) { if (log.isDebugEnabled()) { - String msg = String.format("Network partition groups property found in application policy [application-id] %s [application-policy-id] %s. " - + "Hence using network partition groups for app bursting", applicationId, applicatioinPolicyId); + String msg = String.format("Network partition groups property found in " + + "application policy [application-id] %s [application-policy-id] %s. " + + "Hence using network partition groups for app bursting", + applicationId, applicationPolicyId); log.debug(msg); } int totalNetworkPartitionGroups = networkPartitionGroups.length; if (log.isDebugEnabled()) { - String msg = String.format("%s network partition groups found in application policy [application-id] %s [application-policy-id] %s", - totalNetworkPartitionGroups, applicationId, applicatioinPolicyId); + String msg = String.format("%s network partition groups found in application " + + "policy [application-id] %s [application-policy-id] %s", + totalNetworkPartitionGroups, applicationId, applicationPolicyId); log.debug(msg); } - int currentPartitionIndex = networkPartitionAlgorithmContext.getCurrentNetworkPartitionIndex().intValue(); + int currentPartitionIndex = networkPartitionAlgorithmContext. + getCurrentNetworkPartitionIndex().intValue(); if (log.isDebugEnabled()) { - String msg = String.format("Current network partition group index is %s [application-id] %s [application-policy-d]", - currentPartitionIndex, applicationId, applicatioinPolicyId); + String msg = String.format("Current network partition group index is %s " + + "[application-id] %s [application-policy-d] %s", + currentPartitionIndex, applicationId, applicationPolicyId); log.debug(msg); } if (currentPartitionIndex >= totalNetworkPartitionGroups) { if (log.isDebugEnabled()) { - String msg = String.format("currentPartitionIndex >= totalNetworkPartitionGroups, hence no more network partition groups are available " - + "[application-id] %s [application-policy-d]", currentPartitionIndex, applicationId, applicatioinPolicyId); + String msg = String.format("currentPartitionIndex %s >= " + + "totalNetworkPartitionGroups %s, hence no more network partition" + + " groups are available [application-id] %s " + + "[application-policy-id] %s", currentPartitionIndex, + totalNetworkPartitionGroups, applicationId, applicationPolicyId); log.debug(msg); } return null; } - int selectedIndex = networkPartitionAlgorithmContext.getCurrentNetworkPartitionIndex().incrementAndGet(); + int selectedIndex = networkPartitionAlgorithmContext. + getCurrentNetworkPartitionIndex().incrementAndGet(); if (log.isDebugEnabled()) { - String msg = String.format("Selected network partition group index is %s (starting from 1,2,3...) [application-id] %s [application-policy-d]", - selectedIndex, applicationId, applicatioinPolicyId); + String msg = String.format("Selected network partition group index is %s " + + "(starting from 1,2,3...) [application-id] %s " + + "[application-policy-d] %s", selectedIndex, + applicationId, applicationPolicyId); log.debug(msg); } if (log.isDebugEnabled()) { - String msg = String.format("Selected network partition group is %s [application-id] %s [application-policy-d]", - networkPartitionGroups[selectedIndex - 1], applicationId, applicatioinPolicyId); + String msg = String.format("Selected network partition group is %s " + + "[application-id] %s [application-policy-id] %s", + networkPartitionGroups[selectedIndex - 1], applicationId, applicationPolicyId); log.debug(msg); } - String[] selectedNetworkPartitions = networkPartitionGroups[selectedIndex - 1].split(StratosConstants.APPLICATION_POLICY_NETWORK_PARTITIONS_SPLITTER); - if (selectedNetworkPartitions == null) { - return null; - } + List<String> selectedNetworkPartitions = new ArrayList<String>(); + Collections.addAll(selectedNetworkPartitions, networkPartitionGroups[selectedIndex - 1]. + split(StratosConstants.APPLICATION_POLICY_NETWORK_PARTITIONS_SPLITTER)); - return Arrays.asList(selectedNetworkPartitions); + return selectedNetworkPartitions; } String[] networkPartitions = applicationPolicy.getNetworkPartitions(); if (networkPartitions == null || networkPartitions.length == 0) { if (log.isWarnEnabled()) { - String msg = String.format("Network partitions found in application policy [application-id] %s [application-policy-id] %s", - applicationId, applicatioinPolicyId); + String msg = String.format("Network partitions found in application policy " + + "[application-id] %s [application-policy-id] %s", + applicationId, applicationPolicyId); log.warn(msg); } return null; @@ -125,37 +144,45 @@ public class OneAfterAnotherAlgorithm implements NetworkPartitionAlgorithm { int totalNetworkPartitions = networkPartitions.length; if (log.isDebugEnabled()) { - String msg = String.format("%s network partitions found in application policy [application-id] %s [application-policy-id] %s", - totalNetworkPartitions, applicationId, applicatioinPolicyId); + String msg = String.format("%s network partitions found in application policy " + + "[application-id] %s [application-policy-id] %s", + totalNetworkPartitions, applicationId, applicationPolicyId); log.debug(msg); } - int currentPartitionIndex = networkPartitionAlgorithmContext.getCurrentNetworkPartitionIndex().intValue(); + int currentPartitionIndex = networkPartitionAlgorithmContext. + getCurrentNetworkPartitionIndex().intValue(); if (log.isDebugEnabled()) { - String msg = String.format("Current network partition index is %s [application-id] %s [application-policy-d]", - currentPartitionIndex, applicationId, applicatioinPolicyId); + String msg = String.format("Current network partition index is %s " + + "[application-id] %s [application-policy-id] %s", + currentPartitionIndex, applicationId, applicationPolicyId); log.debug(msg); } if (currentPartitionIndex >= totalNetworkPartitions) { if (log.isDebugEnabled()) { - String msg = String.format("currentPartitionIndex >= totalNetworkPartitions, hence no more network partitions are available " - + "[application-id] %s [application-policy-d]", currentPartitionIndex, applicationId, applicatioinPolicyId); + String msg = String.format("currentPartitionIndex %s >= totalNetworkPartitions %s , " + + "hence no more network partitions are available " + + "[application-id] %s [application-policy-id] %s", currentPartitionIndex, + totalNetworkPartitions, applicationId, applicationPolicyId); log.debug(msg); } return null; } - int selectedIndex = networkPartitionAlgorithmContext.getCurrentNetworkPartitionIndex().incrementAndGet(); + int selectedIndex = networkPartitionAlgorithmContext.getCurrentNetworkPartitionIndex(). + incrementAndGet(); if (log.isDebugEnabled()) { - String msg = String.format("Selected network partition index is %s (starting from 1,2,3...) [application-id] %s [application-policy-d]", - selectedIndex, applicationId, applicatioinPolicyId); + String msg = String.format("Selected network partition index is %s " + + "(starting from 1,2,3...) [application-id] %s [application-policy-id] %s", + selectedIndex, applicationId, applicationPolicyId); log.debug(msg); } if (log.isDebugEnabled()) { - String msg = String.format("Selected network partition is %s [application-id] %s [application-policy-d]", - networkPartitions[selectedIndex - 1], applicationId, applicatioinPolicyId); + String msg = String.format("Selected network partition is %s [application-id] %s " + + "[application-policy-id] %s", + networkPartitions[selectedIndex - 1], applicationId, applicationPolicyId); log.debug(msg); } @@ -164,4 +191,68 @@ public class OneAfterAnotherAlgorithm implements NetworkPartitionAlgorithm { return nextNetworkPartitions; } + + @Override + public List<String> getDefaultNetworkPartitions(NetworkPartitionAlgorithmContext + networkPartitionAlgorithmContext) { + if (networkPartitionAlgorithmContext == null) { + if (log.isWarnEnabled()) { + String msg = "Network partition algorithm context is null"; + log.warn(msg); + } + return null; + } + + String applicationId = networkPartitionAlgorithmContext.getApplicationId(); + if (applicationId == null) { + if (log.isWarnEnabled()) { + String msg = "Application id is null in network partition algorithm context"; + log.warn(msg); + } + return null; + } + + ApplicationPolicy applicationPolicy = PolicyManager.getInstance().getApplicationPolicy( + networkPartitionAlgorithmContext.getApplicationPolicyId()); + if (applicationPolicy == null) { + if (log.isWarnEnabled()) { + String msg = String.format("No application policy found in network partition " + + "algorithm context [application-id] %s", applicationId); + log.warn(msg); + } + return null; + } + + String applicationPolicyId = applicationPolicy.getId(); + String[] networkPartitionGroups = applicationPolicy.getNetworkPartitionGroups(); + List<String> selectedNetworkPartitions = new ArrayList<String>(); + + if (networkPartitionGroups != null && networkPartitionGroups.length != 0) { + if (log.isDebugEnabled()) { + String msg = String.format("Network partition groups property found in application " + + "policy [application-id] %s [application-policy-id] %s. " + + "Hence using network partition groups for app bursting", + applicationId, applicationPolicyId); + log.debug(msg); + } + int totalNetworkPartitionGroups = networkPartitionGroups.length; + if (log.isDebugEnabled()) { + String msg = String.format("%s network partition groups found in application policy" + + " [application-id] %s [application-policy-id] %s", + totalNetworkPartitionGroups, applicationId, applicationPolicyId); + log.debug(msg); + } + //Returning the very first network-partition group as the default one + Collections.addAll(selectedNetworkPartitions, networkPartitionGroups[0]. + split(StratosConstants.APPLICATION_POLICY_NETWORK_PARTITIONS_SPLITTER)); + + } else { + //Returning the very first network-partition as the default one + String[] networkPartitions = applicationPolicy.getNetworkPartitions(); + selectedNetworkPartitions.add(networkPartitions[0]); + } + + return selectedNetworkPartitions; + + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/10cf2da7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java index 8183ea8..871bbf6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java @@ -120,7 +120,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { ApplicationInstance instance = (ApplicationInstance) instanceIdToInstanceMap. get(instanceContext.getId()); //stopping the monitoring when the group is inactive/Terminating/Terminated - if (instance.getStatus().getCode() <= GroupStatus.Active.getCode()) { + if (instance.getStatus().getCode() <= ApplicationStatus.Active.getCode()) { //Gives priority to scaling max out rather than dependency scaling if (!instanceContext.getIdToScalingOverMaxEvent().isEmpty()) { //handling the scaling max out of the children @@ -192,9 +192,54 @@ public class ApplicationMonitor extends ParentComponentMonitor { //all the children sent the scale down only, it will try to scale down if (allChildrenScaleDown) { - //Check whether this app monitor has burst application - ApplicationBuilder.handleApplicationInstanceTerminatingEvent(this.appId, - instanceContext.getId()); + //Need to get the network partition + NetworkPartitionAlgorithmContext algorithmContext = AutoscalerContext.getInstance(). + getNetworkPartitionAlgorithmContext(appId); + if (algorithmContext == null) { + String msg = String.format("Network partition algorithm context not found " + + "in registry or in-memory [application-id] %s", appId); + log.error(msg); + throw new RuntimeException(msg); + } + + ApplicationPolicy applicationPolicy = PolicyManager.getInstance(). + getApplicationPolicy(algorithmContext.getApplicationPolicyId()); + if (applicationPolicy == null) { + String msg = String.format("Application policy not found in registry or " + + "in-memory [application-id] %s", appId); + log.error(msg); + throw new RuntimeException(msg); + } + + String networkPartitionAlgorithmName = applicationPolicy.getAlgorithm(); + if (log.isDebugEnabled()) { + String msg = String.format("Network partition algorithm is %s [application-id] %s", + networkPartitionAlgorithmName, appId); + log.debug(msg); + } + + NetworkPartitionAlgorithm algorithm = getNetworkPartitionAlgorithm( + networkPartitionAlgorithmName); + if (algorithm == null) { + String msg = String.format("Couldn't create network partition algorithm " + + "[application-id] %s", appId); + log.error(msg); + throw new RuntimeException(msg); + } + + + // Check whether the network-partition of the application + // instance belongs to default set of network-partitions. + // If it is default set, then application instance cannot be terminated. + List<String> defaultNetworkPartitions = algorithm. + getDefaultNetworkPartitions(algorithmContext); + if(!defaultNetworkPartitions.contains(nwPartitionContext.getId())) { + //Since it is not default network-partition, it can be terminated + // upon scale-down of the children as it has been created by bursting + ApplicationBuilder.handleApplicationInstanceTerminatingEvent(this.appId, + instanceContext.getId()); + } + } //Resetting the events http://git-wip-us.apache.org/repos/asf/stratos/blob/10cf2da7/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 328aa26..4d2e3bf 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 @@ -221,24 +221,28 @@ public class AutoscalerServiceImpl implements AutoscalerService { @Override public ApplicationContext[] getApplications() { return AutoscalerContext.getInstance().getApplicationContexts(). - toArray(new ApplicationContext[AutoscalerContext.getInstance().getApplicationContexts().size()]); + toArray(new ApplicationContext[AutoscalerContext.getInstance(). + getApplicationContexts().size()]); } @Override - public boolean deployApplication(String applicationId, String applicationPolicyId) throws ApplicationDefinitionException { + public boolean deployApplication(String applicationId, String applicationPolicyId) + throws ApplicationDefinitionException { try { Application application = ApplicationHolder.getApplications().getApplication(applicationId); if (application == null) { throw new RuntimeException("Application not found: " + applicationId); } - ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContext(applicationId); + ApplicationContext applicationContext = RegistryManager.getInstance(). + getApplicationContext(applicationId); if (applicationContext == null) { throw new RuntimeException("Application context not found: " + applicationId); } // Create application clusters in cloud controller and send application created event - ApplicationBuilder.handleApplicationDeployment(application, applicationContext.getComponents().getApplicationClusterContexts()); + ApplicationBuilder.handleApplicationDeployment(application, + applicationContext.getComponents().getApplicationClusterContexts()); // validating application policy against the application AutoscalerUtil.validateApplicationPolicyAgainstApplication(applicationId, applicationPolicyId); @@ -254,13 +258,14 @@ public class AutoscalerServiceImpl implements AutoscalerService { } // adding network partition algorithm context to registry - ApplicationPolicy applicationPolicy = PolicyManager.getInstance().getApplicationPolicy(applicationPolicyId); - NetworkPartitionAlgorithmContext algorithmContext = new NetworkPartitionAlgorithmContext(applicationId, applicationPolicy, 0); + NetworkPartitionAlgorithmContext algorithmContext = + new NetworkPartitionAlgorithmContext(applicationId, applicationPolicyId, 0); AutoscalerContext.getInstance().addNetworkPartitionAlgorithmContext(algorithmContext); if (!applicationContext.isMultiTenant()) { // Add application signup for single tenant applications - addApplicationSignUp(applicationContext, application.getKey(), findApplicationClusterIds(application)); + addApplicationSignUp(applicationContext, application.getKey(), + findApplicationClusterIds(application)); } applicationContext.setStatus(ApplicationContext.STATUS_DEPLOYED); AutoscalerContext.getInstance().updateApplicationContext(applicationContext); @@ -268,7 +273,8 @@ public class AutoscalerServiceImpl implements AutoscalerService { log.info("Waiting for application clusters to be created: [application] " + applicationId); return true; } catch (Exception e) { - ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContext(applicationId); + ApplicationContext applicationContext = RegistryManager.getInstance(). + getApplicationContext(applicationId); if (applicationContext != null) { // Revert application status applicationContext.setStatus(ApplicationContext.STATUS_CREATED); @@ -367,7 +373,8 @@ public class AutoscalerServiceImpl implements AutoscalerService { } } if (groupContext.getGroupContexts() != null) { - for (CartridgeContext cartridgeContext : getCartridgeContextsOfGroupsRecursively(groupContext.getGroupContexts())) { + for (CartridgeContext cartridgeContext : + getCartridgeContextsOfGroupsRecursively(groupContext.getGroupContexts())) { cartridgeContextsList.add(cartridgeContext); }
