Fixing formatting issues
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a2749a9e Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a2749a9e Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a2749a9e Branch: refs/heads/master Commit: a2749a9ecb8206ee21ce616287c91ef7548df3e7 Parents: 4b5a381 Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Aug 7 16:13:15 2015 -0500 Committer: Lahiru Sandaruwan <[email protected]> Committed: Wed Aug 12 09:17:56 2015 -0500 ---------------------------------------------------------------------- .../applications/ApplicationUtils.java | 11 +- .../dependency/DependencyBuilder.java | 44 +-- .../applications/dependency/DependencyTree.java | 13 +- .../context/ApplicationChildContext.java | 7 +- .../parser/DefaultApplicationParser.java | 58 ++- .../applications/parser/ParserUtils.java | 18 +- .../applications/payload/BasicPayloadData.java | 26 +- .../applications/payload/PayloadFactory.java | 2 +- .../pojo/ApplicationClusterContext.java | 17 +- .../applications/pojo/ApplicationContext.java | 4 +- .../applications/pojo/ComponentContext.java | 8 +- .../pojo/SubscribableInfoContext.java | 16 +- .../client/AutoscalerCloudControllerClient.java | 25 +- .../autoscaler/context/AutoscalerContext.java | 6 +- .../application/ParentInstanceContext.java | 4 +- .../context/cluster/AbstractClusterContext.java | 2 +- .../context/cluster/ClusterInstanceContext.java | 8 +- .../context/member/MemberStatsContext.java | 48 +-- .../partition/ClusterLevelPartitionContext.java | 76 ++-- .../network/NetworkPartitionContext.java | 28 +- .../InstanceNotificationPublisher.java | 16 +- .../AutoscalerTopologyEventReceiver.java | 2 +- .../stratos/autoscaler/monitor/Monitor.java | 25 +- .../autoscaler/monitor/MonitorFactory.java | 10 +- .../monitor/cluster/ClusterMonitor.java | 50 ++- .../monitor/component/ApplicationMonitor.java | 14 +- .../monitor/component/GroupMonitor.java | 24 +- .../component/ParentComponentMonitor.java | 40 +- .../autoscaler/pojo/policy/PolicyManager.java | 27 +- .../rule/AutoscalerRuleEvaluator.java | 39 +- .../autoscaler/rule/RuleTasksDelegator.java | 3 +- .../services/impl/AutoscalerServiceImpl.java | 10 +- .../stratos/autoscaler/util/AutoscalerUtil.java | 382 +++++++++---------- .../stratos/autoscaler/util/ConfUtil.java | 4 +- .../autoscaler/util/ServiceReferenceHolder.java | 32 +- .../stratos/autoscaler/AutoscalerUtilTest.java | 8 +- .../stratos/autoscaler/TestMinimumRule.java | 8 +- .../autoscaler/TestObsoletedMemberRule.java | 8 +- 38 files changed, 549 insertions(+), 574 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java index 874666e..c8de90f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ApplicationUtils.java @@ -37,11 +37,10 @@ import java.util.Set; import java.util.regex.Pattern; public class ApplicationUtils { - private static final Log log = LogFactory.getLog(ApplicationUtils.class); - public static final String TOKEN_PAYLOAD_PARAM_NAME = "TOKEN"; public static final String DEPLOYMENT = "DEPLOYMENT"; public static final String PAYLOAD_PARAMETER = "payload_parameter."; + private static final Log log = LogFactory.getLog(ApplicationUtils.class); public static Pattern ALIAS_PATTERN = Pattern.compile("([a-z0-9]+([-][a-z0-9])*)+"); public static boolean isAliasValid(String alias) { @@ -139,12 +138,12 @@ public class ApplicationUtils { public static PayloadData createPayload(String appId, String groupName, Cartridge cartridge, String subscriptionKey, int tenantId, String clusterId, String hostName, String repoUrl, String alias, Map<String, String> customPayloadEntries, String[] dependencyAliases, org.apache.stratos.common.Properties properties, String oauthToken, String[] dependencyClusterIDs, - String[] exportMetadata, String[] importMetadata,String lvsVirtualIP) + String[] exportMetadata, String[] importMetadata, String lvsVirtualIP) throws ApplicationDefinitionException { //Create the payload BasicPayloadData basicPayloadData = createBasicPayload(appId, groupName, cartridge, subscriptionKey, - clusterId, hostName, repoUrl, alias, tenantId, dependencyAliases, dependencyClusterIDs, exportMetadata, importMetadata,lvsVirtualIP); + clusterId, hostName, repoUrl, alias, tenantId, dependencyAliases, dependencyClusterIDs, exportMetadata, importMetadata, lvsVirtualIP); //Populate the basic payload details basicPayloadData.populatePayload(); @@ -212,7 +211,7 @@ public class ApplicationUtils { String subscriptionKey, String clusterId, String hostName, String repoUrl, String alias, int tenantId, String[] dependencyAliases, String[] dependencyCLusterIDs, - String[] exportMetadata, String[] importMetadata,String lvsVirtualIP) { + String[] exportMetadata, String[] importMetadata, String lvsVirtualIP) { BasicPayloadData basicPayloadData = new BasicPayloadData(); basicPayloadData.setAppId(appId); @@ -224,7 +223,7 @@ public class ApplicationUtils { basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridge)); basicPayloadData.setServiceName(cartridge.getType()); basicPayloadData.setProvider(cartridge.getProvider()); - basicPayloadData.setLvsVirtualIP(lvsVirtualIP); + basicPayloadData.setLvsVirtualIP(lvsVirtualIP); if (repoUrl != null) { basicPayloadData.setGitRepositoryUrl(repoUrl); http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java index 7d3b59e..fe5ae12 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyBuilder.java @@ -39,15 +39,31 @@ public class DependencyBuilder { } - private static class Holder { - private static final DependencyBuilder INSTANCE = new DependencyBuilder(); - } - public static DependencyBuilder getInstance() { return Holder.INSTANCE; } /** + * Utility method to get the group alias from the startup order Eg: group.mygroup + * + * @param startupOrder startup order + * @return group alias + */ + public static String getGroupFromStartupOrder(String startupOrder) { + return startupOrder.substring(AutoscalerConstants.GROUP.length() + 1); + } + + /** + * Utility method to get the cluster alias from startup order Eg: cartridge.myphp + * + * @param startupOrder startup order + * @return cluster alias + */ + public static String getClusterFromStartupOrder(String startupOrder) { + return startupOrder.substring(AutoscalerConstants.CARTRIDGE.length() + 1); + } + + /** * This will build the dependency tree based on the given dependencies * * @param component it will give the necessary information to build the tree @@ -236,23 +252,7 @@ public class DependencyBuilder { return scalingDependentLists; } - /** - * Utility method to get the group alias from the startup order Eg: group.mygroup - * - * @param startupOrder startup order - * @return group alias - */ - public static String getGroupFromStartupOrder(String startupOrder) { - return startupOrder.substring(AutoscalerConstants.GROUP.length() + 1); - } - - /** - * Utility method to get the cluster alias from startup order Eg: cartridge.myphp - * - * @param startupOrder startup order - * @return cluster alias - */ - public static String getClusterFromStartupOrder(String startupOrder) { - return startupOrder.substring(AutoscalerConstants.CARTRIDGE.length() + 1); + private static class Holder { + private static final DependencyBuilder INSTANCE = new DependencyBuilder(); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java index 04af9b1..00e3fd5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/DependencyTree.java @@ -230,10 +230,6 @@ public class DependencyTree { allChildrenOfAppContext); } - public void setTerminationBehavior(TerminationBehavior terminationBehavior) { - this.terminationBehavior = terminationBehavior; - } - public boolean isTerminateDependent() { return this.getTerminationBehavior() == TerminationBehavior.TERMINATE_DEPENDENT; } @@ -242,13 +238,12 @@ public class DependencyTree { return this.getTerminationBehavior() == TerminationBehavior.TERMINATE_ALL; } - public TerminationBehavior getTerminationBehavior() { return terminationBehavior; } - public enum TerminationBehavior { - TERMINATE_ALL, TERMINATE_NONE, TERMINATE_DEPENDENT + public void setTerminationBehavior(TerminationBehavior terminationBehavior) { + this.terminationBehavior = terminationBehavior; } public String getId() { @@ -281,4 +276,8 @@ public class DependencyTree { } } } + + public enum TerminationBehavior { + TERMINATE_ALL, TERMINATE_NONE, TERMINATE_DEPENDENT + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java index 1e4f3fd..56e2840 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/dependency/context/ApplicationChildContext.java @@ -29,17 +29,16 @@ import java.util.Stack; */ public abstract class ApplicationChildContext { - private String id; protected boolean started; + protected boolean hasStartupDependents; + protected boolean isGroupScalingEnabled; + private String id; private boolean terminated; private ClusterStatus status; private Stack<ClusterStatus> statusLifeCycle; private List<ApplicationChildContext> applicationChildContextList; private ApplicationChildContext parent; - protected boolean hasStartupDependents; - protected boolean isGroupScalingEnabled; - public ApplicationChildContext(String id, boolean killDependent) { applicationChildContextList = new ArrayList<ApplicationChildContext>(); statusLifeCycle = new Stack<ClusterStatus>(); http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 7ac88eb..d9378ab 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 @@ -57,10 +57,10 @@ import java.util.*; */ public class DefaultApplicationParser implements ApplicationParser { - private static final String METADATA_APPENDER = "-"; public static final String ALIAS = "alias"; public static final String CARTRIDGE_TYPE = "type"; public static final String LOAD_BALANCER = "lb"; + private static final String METADATA_APPENDER = "-"; private static Log log = LogFactory.getLog(DefaultApplicationParser.class); private List<ApplicationClusterContext> applicationClusterContexts; @@ -73,6 +73,29 @@ public class DefaultApplicationParser implements ApplicationParser { } + /** + * Validates terminationBehavior. The terminationBehavior should be one of the following: + * 1. terminate-none + * 2. terminate-dependents + * 3. terminate-all + * + * @throws ApplicationDefinitionException if terminationBehavior is different to what is + * listed above + */ + private static void validateTerminationBehavior(String terminationBehavior) throws ApplicationDefinitionException { + + if (!(terminationBehavior == null || + AutoscalerConstants.TERMINATE_NONE.equals(terminationBehavior) || + AutoscalerConstants.TERMINATE_DEPENDENTS.equals(terminationBehavior) || + AutoscalerConstants.TERMINATE_ALL.equals(terminationBehavior))) { + throw new ApplicationDefinitionException("Invalid termination behaviour found: [ " + + terminationBehavior + " ], should be one of '" + + AutoscalerConstants.TERMINATE_NONE + "', '" + + AutoscalerConstants.TERMINATE_DEPENDENTS + "', '" + + AutoscalerConstants.TERMINATE_ALL + "'"); + } + } + @Override public Application parse(ApplicationContext applicationContext) throws ApplicationDefinitionException, CartridgeGroupNotFoundException, @@ -153,7 +176,7 @@ public class DefaultApplicationParser implements ApplicationParser { if (!ApplicationUtils.isAliasValid(alias)) { handleError(String.format("Alias is not valid: [application-id] %s " + - "[cartridge-type] %s [alias] %s [valid-pattern] %s", applicationId, cartridgeType, alias, + "[cartridge-type] %s [alias] %s [valid-pattern] %s", applicationId, cartridgeType, alias, ApplicationUtils.ALIAS_PATTERN.pattern())); } @@ -235,7 +258,6 @@ public class DefaultApplicationParser implements ApplicationParser { return subscribableInfoContextMap; } - /** * Builds the Application structure * @@ -334,7 +356,6 @@ public class DefaultApplicationParser implements ApplicationParser { return application; } - /** * Parse Subscription Information * @@ -455,7 +476,7 @@ public class DefaultApplicationParser implements ApplicationParser { subscribableInfoContext.getDeploymentPolicy(), isLB, tenantRange, subscribableInfoContext.getDependencyAliases(), subscribableInfoContext.getProperties(), arrDependencyClusterIDs, arrExportMetadata, - arrImportMetadata,subscribableInfoContext.getLvsVirtualIP()); + arrImportMetadata, subscribableInfoContext.getLvsVirtualIP()); appClusterCtxt.setAutoscalePolicyName(subscribableInfoContext.getAutoscalingPolicy()); appClusterCtxt.setProperties(subscribableInfoContext.getProperties()); @@ -529,29 +550,6 @@ public class DefaultApplicationParser implements ApplicationParser { } /** - * Validates terminationBehavior. The terminationBehavior should be one of the following: - * 1. terminate-none - * 2. terminate-dependents - * 3. terminate-all - * - * @throws ApplicationDefinitionException if terminationBehavior is different to what is - * listed above - */ - private static void validateTerminationBehavior(String terminationBehavior) throws ApplicationDefinitionException { - - if (!(terminationBehavior == null || - AutoscalerConstants.TERMINATE_NONE.equals(terminationBehavior) || - AutoscalerConstants.TERMINATE_DEPENDENTS.equals(terminationBehavior) || - AutoscalerConstants.TERMINATE_ALL.equals(terminationBehavior))) { - throw new ApplicationDefinitionException("Invalid termination behaviour found: [ " + - terminationBehavior + " ], should be one of '" + - AutoscalerConstants.TERMINATE_NONE + "', '" + - AutoscalerConstants.TERMINATE_DEPENDENTS + "', '" + - AutoscalerConstants.TERMINATE_ALL + "'"); - } - } - - /** * Parse Group information * * @param appId Application id @@ -942,12 +940,12 @@ public class DefaultApplicationParser implements ApplicationParser { String alias, String clusterId, String hostname, String deploymentPolicy, boolean isLB, String tenantRange, String[] dependencyAliases, Properties properties, String[] dependencyClustorIDs, - String[] exportMetadata, String[] importMetadata,String lvsVirtualIP) + String[] exportMetadata, String[] importMetadata, String lvsVirtualIP) throws ApplicationDefinitionException { // Create text payload PayloadData payloadData = ApplicationUtils.createPayload(appId, groupName, cartridge, subscriptionKey, tenantId, clusterId, - hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata,lvsVirtualIP); + hostname, repoUrl, alias, null, dependencyAliases, properties, oauthToken, dependencyClustorIDs, exportMetadata, importMetadata, lvsVirtualIP); String textPayload = payloadData.toString(); if (log.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java index 904ab53..aa42b7f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ParserUtils.java @@ -72,13 +72,13 @@ public class ParserUtils { for (String commaSeparatedStartupOrder : startupOrderArr) { // convertStartupOrder all Startup Orders to aliases-based List<String> components = Arrays.asList(commaSeparatedStartupOrder.split(",")); - for(String component : components) { + for (String component : components) { boolean aliasFound = false; - if(component.startsWith(AutoscalerConstants.GROUP)) { + if (component.startsWith(AutoscalerConstants.GROUP)) { String groupAlias = component.substring(AutoscalerConstants.GROUP.length() + 1); - if(groupContext.getGroupContexts() != null) { - for(GroupContext context : groupContext.getGroupContexts()) { - if(context.getAlias().equals(groupAlias)) { + if (groupContext.getGroupContexts() != null) { + for (GroupContext context : groupContext.getGroupContexts()) { + if (context.getAlias().equals(groupAlias)) { aliasFound = true; } } @@ -87,15 +87,15 @@ public class ParserUtils { } else { String cartridgeAlias = component.substring( AutoscalerConstants.CARTRIDGE.length() + 1); - if(groupContext.getCartridgeContexts() != null) { - for(CartridgeContext context : groupContext.getCartridgeContexts()) { - if(context.getSubscribableInfoContext().getAlias().equals(cartridgeAlias)) { + if (groupContext.getCartridgeContexts() != null) { + for (CartridgeContext context : groupContext.getCartridgeContexts()) { + if (context.getSubscribableInfoContext().getAlias().equals(cartridgeAlias)) { aliasFound = true; } } } } - if(!aliasFound) { + if (!aliasFound) { String msg = "The startup-order defined in the [group] " + groupContext.getName() + " is not correct. [startup-order-alias] " + component + " is not there in the application."; http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java index ebe17aa..86fbac7 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/BasicPayloadData.java @@ -32,7 +32,7 @@ import java.io.Serializable; public class BasicPayloadData implements Serializable { private static Log log = LogFactory.getLog(BasicPayloadData.class); - + protected StringBuilder payloadBuilder; private String appId; private String groupName; private String serviceName; @@ -56,9 +56,7 @@ public class BasicPayloadData implements Serializable { private String[] dependencyClusterIDs; private String[] exportMetadataKeys; private String[] importMetadataKeys; - private String lvsVirtualIP; - - protected StringBuilder payloadBuilder; + private String lvsVirtualIP; public BasicPayloadData() { @@ -129,10 +127,10 @@ public class BasicPayloadData implements Serializable { if (getExportMetadataKeys() != null) { payloadBuilder.append("IMPORT_METADATA_KEYS=" + getImportMetadataKeys()); } - payloadBuilder.append(","); - if(getLvsVirtualIP()!=null && !getLvsVirtualIP().equals("")){ - payloadBuilder.append("LVS_VIRTUAL_IP=" +getLvsVirtualIP()); - } + payloadBuilder.append(","); + if (getLvsVirtualIP() != null && !getLvsVirtualIP().equals("")) { + payloadBuilder.append("LVS_VIRTUAL_IP=" + getLvsVirtualIP()); + } } public String getServiceName() { @@ -394,11 +392,11 @@ public class BasicPayloadData implements Serializable { this.importMetadataKeys = importMetadataKeys; } - public String getLvsVirtualIP() { - return lvsVirtualIP; - } + public String getLvsVirtualIP() { + return lvsVirtualIP; + } - public void setLvsVirtualIP(String lvsVirtualIP) { - this.lvsVirtualIP = lvsVirtualIP; - } + public void setLvsVirtualIP(String lvsVirtualIP) { + this.lvsVirtualIP = lvsVirtualIP; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java index e022f7b..f4ad48b 100755 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/payload/PayloadFactory.java @@ -26,8 +26,8 @@ import org.apache.stratos.autoscaler.exception.application.ApplicationDefinition public class PayloadFactory { - private static final String LB_IDENTIFIER = "lb"; public static final String DATA_IDENTIFIER = "data"; + private static final String LB_IDENTIFIER = "lb"; private static Log log = LogFactory.getLog(PayloadFactory.class); /** http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java index 721a948..cd48cd4 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationClusterContext.java @@ -45,15 +45,6 @@ public class ApplicationClusterContext implements Serializable { private Properties properties; private String[] dependencyClusterIds; - - public PersistenceContext getPersistenceContext() { - return persistenceContext; - } - - public void setPersistenceContext(PersistenceContext persistenceContext) { - this.persistenceContext = persistenceContext; - } - private PersistenceContext persistenceContext; public ApplicationClusterContext(String cartridgeType, String clusterId, String hostName, @@ -69,6 +60,14 @@ public class ApplicationClusterContext implements Serializable { this.dependencyClusterIds = dependencyClusterIds; } + public PersistenceContext getPersistenceContext() { + return persistenceContext; + } + + public void setPersistenceContext(PersistenceContext persistenceContext) { + this.persistenceContext = persistenceContext; + } + public String getClusterId() { return clusterId; } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java index ec79fcf..5c2b1f2 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java @@ -25,12 +25,10 @@ import java.io.Serializable; public class ApplicationContext implements Serializable { - private static final long serialVersionUID = 6704036501869668646L; - public static final String STATUS_CREATED = "Created"; public static final String STATUS_DEPLOYED = "Deployed"; public static final String STATUS_UNDEPLOYING = "Undeploying"; - + private static final long serialVersionUID = 6704036501869668646L; private String applicationId; private String alias; private boolean multiTenant; http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java index 98a0d5d..d3fc2e6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java @@ -54,11 +54,11 @@ public class ComponentContext implements Serializable { this.dependencyContext = dependencyContext; } - public void setApplicationClusterContexts(ApplicationClusterContext[] applicationClusterContexts) { - this.applicationClusterContexts = applicationClusterContexts; - } - public ApplicationClusterContext[] getApplicationClusterContexts() { return applicationClusterContexts; } + + public void setApplicationClusterContexts(ApplicationClusterContext[] applicationClusterContexts) { + this.applicationClusterContexts = applicationClusterContexts; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java index 4ecb4fa..c4b57f0 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/SubscribableInfoContext.java @@ -36,8 +36,8 @@ public class SubscribableInfoContext implements Serializable { private ArtifactRepositoryContext artifactRepositoryContext; private Properties properties; private PersistenceContext persistenceContext; - //This is the virtual IP that we need to pass for use LVS as Load Balancer - private String lvsVirtualIP; + //This is the virtual IP that we need to pass for use LVS as Load Balancer + private String lvsVirtualIP; public String getAlias() { return alias; @@ -111,11 +111,11 @@ public class SubscribableInfoContext implements Serializable { this.persistenceContext = persistenceContext; } - public String getLvsVirtualIP() { - return lvsVirtualIP; - } + public String getLvsVirtualIP() { + return lvsVirtualIP; + } - public void setLvsVirtualIP(String lvsVirtualIP) { - this.lvsVirtualIP = lvsVirtualIP; - } + public void setLvsVirtualIP(String lvsVirtualIP) { + this.lvsVirtualIP = lvsVirtualIP; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java index 9504d53..0124206 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/AutoscalerCloudControllerClient.java @@ -52,18 +52,6 @@ public class AutoscalerCloudControllerClient { private static CloudControllerServiceStub stub; - /* An instance of a CloudControllerClient is created when the class is loaded. - * Since the class is loaded only once, it is guaranteed that an object of - * CloudControllerClient is created only once. Hence it is singleton. - */ - private static class InstanceHolder { - private static final AutoscalerCloudControllerClient INSTANCE = new AutoscalerCloudControllerClient(); - } - - public static AutoscalerCloudControllerClient getInstance() { - return InstanceHolder.INSTANCE; - } - private AutoscalerCloudControllerClient() { try { XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration(); @@ -81,6 +69,10 @@ public class AutoscalerCloudControllerClient { } } + public static AutoscalerCloudControllerClient getInstance() { + return InstanceHolder.INSTANCE; + } + public synchronized MemberContext startInstance(PartitionRef partition, String clusterId, String clusterInstanceId, String networkPartitionId, @@ -182,7 +174,6 @@ public class AutoscalerCloudControllerClient { } } - private Volume[] convertVolumesToStubVolumes(VolumeContext[] volumeContexts) { ArrayList<Volume> volumes = new ArrayList<Volume>(); @@ -233,4 +224,12 @@ public class AutoscalerCloudControllerClient { log.debug(String.format("Service call terminateInstances() returned in %dms", (endTime - startTime))); } } + + /* An instance of a CloudControllerClient is created when the class is loaded. + * Since the class is loaded only once, it is guaranteed that an object of + * CloudControllerClient is created only once. Hence it is singleton. + */ + private static class InstanceHolder { + private static final AutoscalerCloudControllerClient INSTANCE = new AutoscalerCloudControllerClient(); + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java index 3a988e6..0af9b56 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java @@ -49,12 +49,10 @@ public class AutoscalerContext { private static final String AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP = "AS_APPLICATION_ID_TO_APPLICATION_MONITOR_MAP"; private static final String AS_PENDING_APPLICATION_MONITOR_LIST = "AS_PENDING_APPLICATION_MONITOR_LIST"; private static final String AS_APPLICATIOIN_ID_TO_NETWORK_PARTITION_ALGO_CTX_MAP = "AS_APPLICATIOIN_ID_TO_NETWORK_PARTITION_ALGO_CTX_MAP"; - private boolean clustered; - private boolean coordinator; - private static volatile AutoscalerContext instance; private final transient DistributedObjectProvider distributedObjectProvider; - + private boolean clustered; + private boolean coordinator; // Map<ApplicationId, ApplicationContext> private Map<String, ApplicationContext> applicationContextMap; // Map<ClusterId, AbstractClusterMonitor> http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java index 5d7b626..53adbcc 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/application/ParentInstanceContext.java @@ -33,14 +33,14 @@ import java.util.concurrent.ConcurrentHashMap; * This will hold the application instance related info. */ public class ParentInstanceContext extends InstanceContext { + //partitions of this network partition + private final List<ParentLevelPartitionContext> partitionCtxts; //key=id of the child, value=ScalingEvent private Map<String, ScalingEvent> idToScalingEvent; //key=id of the child, value=ScalingUpBeyondMaxEvent private Map<String, ScalingUpBeyondMaxEvent> idToScalingOverMaxEvent; //key=id of the child, value=ScalingDownBeyondMinEvent private Map<String, ScalingDownBeyondMinEvent> idToScalingDownBeyondMinEvent; - //partitions of this network partition - private final List<ParentLevelPartitionContext> partitionCtxts; public ParentInstanceContext(String id) { super(id); http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java index ae12c7e..43608f5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/AbstractClusterContext.java @@ -36,8 +36,8 @@ public class AbstractClusterContext implements Serializable { // cluster id protected String clusterId; - private String serviceId; protected Map<String, ClusterInstance> clusterInstanceMap; + private String serviceId; public AbstractClusterContext(String clusterId, String serviceId) { http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 3c87e3e..5ee45ae 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 @@ -507,15 +507,15 @@ public class ClusterInstanceContext extends InstanceContext { return minCheckKnowledgeSession; } - public StatefulKnowledgeSession getMaxCheckKnowledgeSession() { - return maxCheckKnowledgeSession; - } - public void setMinCheckKnowledgeSession( StatefulKnowledgeSession minCheckKnowledgeSession) { this.minCheckKnowledgeSession = minCheckKnowledgeSession; } + public StatefulKnowledgeSession getMaxCheckKnowledgeSession() { + return maxCheckKnowledgeSession; + } + public StatefulKnowledgeSession getObsoleteCheckKnowledgeSession() { return obsoleteCheckKnowledgeSession; } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java index 6981095..4f89f79 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/member/MemberStatsContext.java @@ -54,54 +54,54 @@ public class MemberStatsContext { return memoryConsumption; } - public void setAverageLoadAverage(float value) { - loadAverage.setAverage(value); - } - - public void setAverageMemoryConsumption(float value) { - memoryConsumption.setAverage(value); - } - - public void setGradientOfLoadAverage(float value) { - loadAverage.setGradient(value); - } - - public void setGradientOfMemoryConsumption(float value) { - memoryConsumption.setGradient(value); - } - - public void setSecondDerivativeOfLoadAverage(float value) { - loadAverage.setSecondDerivative(value); - } - - public void setSecondDerivativeOfMemoryConsumption(float value) { - memoryConsumption.setSecondDerivative(value); - } - public float getAverageLoadAverage() { return loadAverage.getAverage(); } + public void setAverageLoadAverage(float value) { + loadAverage.setAverage(value); + } + public float getAverageMemoryConsumption() { return memoryConsumption.getAverage(); } + public void setAverageMemoryConsumption(float value) { + memoryConsumption.setAverage(value); + } + public float getGradientOfLoadAverage() { return loadAverage.getGradient(); } + public void setGradientOfLoadAverage(float value) { + loadAverage.setGradient(value); + } + public float getGradientOfMemoryConsumption() { return memoryConsumption.getGradient(); } + public void setGradientOfMemoryConsumption(float value) { + memoryConsumption.setGradient(value); + } + public float getSecondDerivativeOfLoadAverage() { return loadAverage.getSecondDerivative(); } + public void setSecondDerivativeOfLoadAverage(float value) { + loadAverage.setSecondDerivative(value); + } + public float getSecondDerivativeOfMemoryConsumption() { return memoryConsumption.getSecondDerivative(); } + public void setSecondDerivativeOfMemoryConsumption(float value) { + memoryConsumption.setSecondDerivative(value); + } + public String getInstanceId() { return instanceId; } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java index 3ef2e45..69dba49 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java @@ -93,6 +93,36 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se this.pendingMembers = new ArrayList<MemberContext>(); } + public ClusterLevelPartitionContext(PartitionRef partition, String networkPartitionId, String deploymentPolicyId) { + + super(partition, networkPartitionId, deploymentPolicyId); + this.pendingMembers = new ArrayList<MemberContext>(); + this.activeMembers = new ArrayList<MemberContext>(); + this.terminationPendingMembers = new ArrayList<MemberContext>(); + this.obsoletedMembers = new ConcurrentHashMap<String, MemberContext>(); + memberStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>(); + + terminationPendingStartedTime = new HashMap<String, Long>(); + // check if a different value has been set for expiryTime + XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration(); + pendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_MEMBER_EXPIRY_TIMEOUT, 900000); + obsoltedMemberExpiryTime = conf.getLong(StratosConstants.OBSOLETED_MEMBER_EXPIRY_TIMEOUT, 86400000); + spinTerminateParallel = conf.getBoolean(StratosConstants.SPIN_TERMINATE_PARALLEL, false); + terminationPendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT, 1800000); + if (log.isDebugEnabled()) { + log.debug("Member expiry time is set to: " + pendingMemberExpiryTime); + log.debug("Member obsoleted expiry time is set to: " + obsoltedMemberExpiryTime); + log.debug("Member pending termination expiry time is set to: " + terminationPendingMemberExpiryTime); + } + + Thread th = new Thread(new PendingMemberWatcher(this)); + th.start(); + Thread th2 = new Thread(new ObsoletedMemberWatcher(this)); + th2.start(); + Thread th3 = new Thread(new TerminationPendingMemberWatcher(this)); + th3.start(); + } + public void terminateAllRemainingInstances() { // Forcefully deleting remaining active members @@ -137,36 +167,6 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se } } - public ClusterLevelPartitionContext(PartitionRef partition, String networkPartitionId, String deploymentPolicyId) { - - super(partition, networkPartitionId, deploymentPolicyId); - this.pendingMembers = new ArrayList<MemberContext>(); - this.activeMembers = new ArrayList<MemberContext>(); - this.terminationPendingMembers = new ArrayList<MemberContext>(); - this.obsoletedMembers = new ConcurrentHashMap<String, MemberContext>(); - memberStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>(); - - terminationPendingStartedTime = new HashMap<String, Long>(); - // check if a different value has been set for expiryTime - XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration(); - pendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_MEMBER_EXPIRY_TIMEOUT, 900000); - obsoltedMemberExpiryTime = conf.getLong(StratosConstants.OBSOLETED_MEMBER_EXPIRY_TIMEOUT, 86400000); - spinTerminateParallel = conf.getBoolean(StratosConstants.SPIN_TERMINATE_PARALLEL, false); - terminationPendingMemberExpiryTime = conf.getLong(StratosConstants.PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT, 1800000); - if (log.isDebugEnabled()) { - log.debug("Member expiry time is set to: " + pendingMemberExpiryTime); - log.debug("Member obsoleted expiry time is set to: " + obsoltedMemberExpiryTime); - log.debug("Member pending termination expiry time is set to: " + terminationPendingMemberExpiryTime); - } - - Thread th = new Thread(new PendingMemberWatcher(this)); - th.start(); - Thread th2 = new Thread(new ObsoletedMemberWatcher(this)); - th2.start(); - Thread th3 = new Thread(new TerminationPendingMemberWatcher(this)); - th3.start(); - } - public long getTerminationPendingStartedTimeOfMember(String memberId) { return terminationPendingStartedTime.get(memberId); } @@ -488,7 +488,7 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se public int getNonTerminatedMemberCount() { int nonTerminatedMemberCount = 0; - if(spinTerminateParallel) { + if (spinTerminateParallel) { // Returning all the pending members as there shouldn't be a spawning // before complete termination. // Will be applicable only when having min1*max1 situation @@ -653,8 +653,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se } private class PendingMemberWatcher implements Runnable { - private ClusterLevelPartitionContext ctxt; private final Log log = LogFactory.getLog(PendingMemberWatcher.class); + private ClusterLevelPartitionContext ctxt; public PendingMemberWatcher(ClusterLevelPartitionContext ctxt) { this.ctxt = ctxt; @@ -675,16 +675,16 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se String clusterInstanceId = pendingMember.getClusterInstanceId(); String clusterId = pendingMember.getClusterId(); String serviceName = pendingMember.getCartridgeType(); - Service service = TopologyManager.getTopology(). + Service service = TopologyManager.getTopology(). getService(serviceName); ClusterStatus status = ClusterStatus.Terminated; - if(service != null) { + if (service != null) { Cluster cluster = service.getCluster(clusterId); - if(cluster != null) { + if (cluster != null) { ClusterInstance instance = cluster. getInstanceContexts(clusterInstanceId); - if(instance!= null) { + if (instance != null) { status = instance.getStatus(); } } @@ -725,8 +725,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se } private class ObsoletedMemberWatcher implements Runnable { - private ClusterLevelPartitionContext ctxt; private final Log log = LogFactory.getLog(ObsoletedMemberWatcher.class); + private ClusterLevelPartitionContext ctxt; public ObsoletedMemberWatcher(ClusterLevelPartitionContext ctxt) { this.ctxt = ctxt; @@ -792,8 +792,8 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se * This thread is responsible for moving member to obsolete list if pending termination timeout happens */ private class TerminationPendingMemberWatcher implements Runnable { - private ClusterLevelPartitionContext ctxt; private final Log log = LogFactory.getLog(TerminationPendingMemberWatcher.class); + private ClusterLevelPartitionContext ctxt; public TerminationPendingMemberWatcher(ClusterLevelPartitionContext ctxt) { this.ctxt = ctxt; http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java index 678e898..0e79647 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/NetworkPartitionContext.java @@ -121,8 +121,8 @@ public class NetworkPartitionContext { public List<InstanceContext> getInstanceIdToInstanceContextMap(String parentInstanceId) { List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>(); - for(InstanceContext instanceContext : instanceIdToInstanceContextMap.values()) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : instanceIdToInstanceContextMap.values()) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } @@ -160,8 +160,8 @@ public class NetworkPartitionContext { public List<InstanceContext> getActiveInstances(String parentInstanceId) { List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>(); - for(InstanceContext instanceContext : activeInstances) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : activeInstances) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } @@ -170,8 +170,8 @@ public class NetworkPartitionContext { public List<InstanceContext> getPendingInstances(String parentInstanceId) { List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>(); - for(InstanceContext instanceContext : pendingInstances) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : pendingInstances) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } @@ -188,8 +188,8 @@ public class NetworkPartitionContext { public int getPendingInstancesCount(String parentInstanceId) { List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>(); - for(InstanceContext instanceContext : pendingInstances) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : pendingInstances) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } @@ -203,8 +203,8 @@ public class NetworkPartitionContext { public int getActiveInstancesCount(String parentInstanceId) { List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>(); - for(InstanceContext instanceContext : activeInstances) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : activeInstances) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } @@ -321,14 +321,14 @@ public class NetworkPartitionContext { public int getNonTerminatedInstancesCount(String parentInstanceId) { List<InstanceContext> instanceContexts = new ArrayList<InstanceContext>(); - for(InstanceContext instanceContext : activeInstances) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : activeInstances) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } - for(InstanceContext instanceContext : pendingInstances) { - if(instanceContext.getParentInstanceId().equals(parentInstanceId)) { + for (InstanceContext instanceContext : pendingInstances) { + if (instanceContext.getParentInstanceId().equals(parentInstanceId)) { instanceContexts.add(instanceContext); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java index a33329a..52d3af1 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/publisher/InstanceNotificationPublisher.java @@ -31,14 +31,6 @@ import org.apache.stratos.messaging.util.MessagingUtil; public class InstanceNotificationPublisher { private static final Log log = LogFactory.getLog(InstanceNotificationPublisher.class); - /* An instance of InstanceNotificationPublisher is created when the class is loaded. - * Since the class is loaded only once, it is guaranteed that an object of - * InstanceNotificationPublisher is created only once. Hence it is singleton. - */ - private static class InstanceHolder { - private static final InstanceNotificationPublisher INSTANCE = new InstanceNotificationPublisher(); - } - public static InstanceNotificationPublisher getInstance() { return InstanceHolder.INSTANCE; } @@ -66,4 +58,12 @@ public class InstanceNotificationPublisher { log.info(String.format("Publishing Instance Cleanup Event: [member] %s", memberId)); publish(new InstanceCleanupMemberEvent(memberId)); } + + /* An instance of InstanceNotificationPublisher is created when the class is loaded. + * Since the class is loaded only once, it is guaranteed that an object of + * InstanceNotificationPublisher is created only once. Hence it is singleton. + */ + private static class InstanceHolder { + private static final InstanceNotificationPublisher INSTANCE = new InstanceNotificationPublisher(); + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java index 119c9c6..3a8c457 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java @@ -93,7 +93,7 @@ public class AutoscalerTopologyEventReceiver { getApplications().values()) { ApplicationContext applicationContext = AutoscalerContext.getInstance(). - getApplicationContext(application.getUniqueIdentifier()); + getApplicationContext(application.getUniqueIdentifier()); if (applicationContext != null && applicationContext.getStatus(). equals(ApplicationContext.STATUS_DEPLOYED)) { if (AutoscalerUtil.allClustersInitialized(application)) { http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java index a32e024..170d99f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java @@ -27,11 +27,6 @@ import java.util.*; * Abstract class for the monitoring functionality in Autoscaler. */ public abstract class Monitor implements EventHandler, Runnable { - //Monitor types - public enum MonitorType { - Application, Group, Cluster - } - //Id of the monitor, cluster=clusterId, group=group-alias, application=app-alias protected String id; //The parent app which this monitor relates to @@ -42,7 +37,6 @@ public abstract class Monitor implements EventHandler, Runnable { protected boolean hasStartupDependents; //monitors map, key=InstanceId and value=ClusterInstance/GroupInstance/ApplicationInstance protected Map<String, Instance> instanceIdToInstanceMap; - public Monitor() { this.instanceIdToInstanceMap = new HashMap<String, Instance>(); } @@ -75,13 +69,6 @@ public abstract class Monitor implements EventHandler, Runnable { } /** - * Return the type of the monitor. - * - * @return monitor type - */ - public abstract MonitorType getMonitorType(); - - /** * Set the id of the monitor * * @param id id of the monitor @@ -91,6 +78,13 @@ public abstract class Monitor implements EventHandler, Runnable { } /** + * Return the type of the monitor. + * + * @return monitor type + */ + public abstract MonitorType getMonitorType(); + + /** * To get the appId of the monitor * * @return application id of the monitor @@ -216,4 +210,9 @@ public abstract class Monitor implements EventHandler, Runnable { public boolean hasInstance() { return !instanceIdToInstanceMap.isEmpty(); } + + //Monitor types + public enum MonitorType { + Application, Group, Cluster + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 0b265e6..cf7e06e 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 @@ -148,10 +148,10 @@ public class MonitorFactory { //Find whether any other instances exists in group // which has not been added to in-memory model in the restart ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().getAppMonitor(appId); - if(applicationMonitor != null && applicationMonitor.isRestarting()) { + if (applicationMonitor != null && applicationMonitor.isRestarting()) { Collection<Instance> instances = parentMonitor.getInstances(); - for(Instance instance : instances) { - if(!instanceIds.contains(instance.getInstanceId())) { + for (Instance instance : instances) { + if (!instanceIds.contains(instance.getInstanceId())) { instanceIds.add(instance.getInstanceId()); } } @@ -241,8 +241,8 @@ public class MonitorFactory { //Find whether any other instances exists in group // which has not been added to in-memory model in the restart Collection<Instance> instances = parentMonitor.getInstances(); - for(Instance instance : instances) { - if(!parentInstanceIds.contains(instance.getInstanceId())) { + for (Instance instance : instances) { + if (!parentInstanceIds.contains(instance.getInstanceId())) { parentInstanceIds.add(instance.getInstanceId()); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 d4a2746..43493bd 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 @@ -84,23 +84,21 @@ import java.util.concurrent.atomic.AtomicBoolean; */ public class ClusterMonitor extends Monitor { + private static final Log log = LogFactory.getLog(ClusterMonitor.class); private final ScheduledExecutorService scheduler; private final ExecutorService executorService; - protected boolean hasFaultyMember = false; protected ClusterContext clusterContext; + protected String serviceType; + protected String clusterId; // future to cancel it when destroying monitors private ScheduledFuture<?> schedulerFuture; - protected String serviceType; private AtomicBoolean monitoringStarted; - protected String clusterId; private Cluster cluster; private int monitoringIntervalMilliseconds; //has scaling dependents private boolean hasScalingDependents; private boolean groupScalingEnabledSubtree; - - private static final Log log = LogFactory.getLog(ClusterMonitor.class); private String deploymentPolicyId; @@ -121,6 +119,27 @@ public class ClusterMonitor extends Monitor { this.deploymentPolicyId = deploymentPolicyId; } + private static void createClusterInstance(String serviceType, + String clusterId, String alias, String instanceId, + String partitionId, String networkPartitionId) { + + try { + CloudControllerServiceClient.getInstance().createClusterInstance( + serviceType, clusterId, alias, instanceId, partitionId, + networkPartitionId); + } catch (RemoteException e) { + String msg = " Exception occurred in creating cluster instance with cluster-id [" + clusterId + + "] instance-id [" + instanceId + "] service-type [" + serviceType + "]" + + "] alias [" + alias + "] partition-id [" + partitionId + "]" + + "] network-parition-id [" + networkPartitionId + "]" + + " .Reason [" + e.getMessage() + "]"; + log.error(msg); + throw new RuntimeException(msg, e); + } + + + } + @Override public MonitorType getMonitorType() { return MonitorType.Cluster; @@ -246,27 +265,6 @@ public class ClusterMonitor extends Monitor { return groupScalingEnabledSubtree; } - private static void createClusterInstance(String serviceType, - String clusterId, String alias, String instanceId, - String partitionId, String networkPartitionId) { - - try { - CloudControllerServiceClient.getInstance().createClusterInstance( - serviceType, clusterId, alias, instanceId, partitionId, - networkPartitionId); - } catch (RemoteException e) { - String msg = " Exception occurred in creating cluster instance with cluster-id [" + clusterId - + "] instance-id [" + instanceId + "] service-type [" + serviceType + "]" - + "] alias [" + alias + "] partition-id [" + partitionId + "]" - + "] network-parition-id [" + networkPartitionId + "]" - + " .Reason [" + e.getMessage() + "]"; - log.error(msg); - throw new RuntimeException(msg, e); - } - - - } - public void handleAverageLoadAverageEvent( AverageLoadAverageEvent averageLoadAverageEvent) { http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 c917f2d..41b6e1f 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 { getInstanceIdToInstanceContextMap().values()) { ApplicationInstance instance = (ApplicationInstance) instanceIdToInstanceMap. get(instanceContext.getId()); - ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext; + ParentInstanceContext parentInstanceContext = (ParentInstanceContext) instanceContext; //stopping the monitoring when the group is inactive/Terminating/Terminated if (instance.getStatus().getCode() <= ApplicationStatus.Active.getCode()) { //Gives priority to scaling max out rather than dependency scaling @@ -152,7 +152,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { if (application != null) { List<String> defaultNetworkPartitions = getDefaultNetworkPartitions(application); //Checking for whether minimum application instances are there. - if(defaultNetworkPartitions != null) { + if (defaultNetworkPartitions != null) { checkForMinimumApplicationInstances(application, defaultNetworkPartitions); } @@ -328,7 +328,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { } } //Starting the dependencies - if(!instanceIds.isEmpty()) { + if (!instanceIds.isEmpty()) { startDependency(application, instanceIds); } @@ -339,10 +339,10 @@ public class ApplicationMonitor extends ParentComponentMonitor { for (NetworkPartitionContext networkPartitionContext : networkPartitionContextsMap.values()) { String nPartitionId = networkPartitionContext.getId(); - if(!defaultNetworkPartitions.contains(nPartitionId)) { + if (!defaultNetworkPartitions.contains(nPartitionId)) { log.info("The [application] " + appId + " runtime cannot be in [network-partition] " + nPartitionId + " as it is removed from the [application-policy]...!"); - for(InstanceContext instanceContext: networkPartitionContext. + for (InstanceContext instanceContext : networkPartitionContext. getInstanceIdToInstanceContextMap().values()) { //Handling application instance termination ApplicationBuilder.handleApplicationInstanceTerminatingEvent(this.appId, @@ -554,7 +554,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { getInstanceByNetworkPartitionId(context.getId()); if (appInstance != null) { //use the existing instance in the Topology to create the data - if(!isRestarting) { + if (!isRestarting) { this.setRestarting(true); } instanceId = handleApplicationInstanceCreation(application, context, appInstance); @@ -588,7 +588,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { " [appInstanceId] " + instance.getInstanceId()); } } - if(!instanceIds.isEmpty()) { + if (!instanceIds.isEmpty()) { startDependency(application, instanceIds); } http://git-wip-us.apache.org/repos/asf/stratos/blob/a2749a9e/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 eee0a3a..c3e89ee 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 @@ -125,7 +125,7 @@ public class GroupMonitor extends ParentComponentMonitor { for (InstanceContext instanceContext : networkPartitionContext. getInstanceIdToInstanceContextMap().values()) { - ParentInstanceContext parentInstanceContext = (ParentInstanceContext)instanceContext; + ParentInstanceContext parentInstanceContext = (ParentInstanceContext) instanceContext; GroupInstance instance = (GroupInstance) instanceIdToInstanceMap. get(instanceContext.getId()); //stopping the monitoring when the group is inactive/Terminating/Terminated @@ -158,7 +158,7 @@ public class GroupMonitor extends ParentComponentMonitor { Collection<Instance> parentInstances = parent.getInstances(); for (Instance parentInstance : parentInstances) { - if(parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) { + if (parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) { int nonTerminatedInstancesCount = networkPartitionContext. getNonTerminatedInstancesCount(parentInstance.getInstanceId()); int minInstances = networkPartitionContext. @@ -183,8 +183,8 @@ public class GroupMonitor extends ParentComponentMonitor { if (activeAppInstances > 0) { //Creating new group instance based on the existing parent instances log.info("Creating a group instance of [application] " - + appId + " [group] " + id + - " as the the minimum required instances are not met"); + + appId + " [group] " + id + + " as the the minimum required instances are not met"); createInstanceOnDemand(parentInstanceContext.getId()); } @@ -204,10 +204,10 @@ public class GroupMonitor extends ParentComponentMonitor { InstanceContext instanceContext = contextList.get(i); //scale down only when extra instances found log.info("Terminating a group instance of [application] " - + appId + " [group] " + id + " as it exceeded the " + - "maximum no of instances by " + instancesToBeTerminated); + + appId + " [group] " + id + " as it exceeded the " + + "maximum no of instances by " + instancesToBeTerminated); - handleScalingDownBeyondMin((ParentInstanceContext)instanceContext, + handleScalingDownBeyondMin((ParentInstanceContext) instanceContext, networkPartitionContext, true); } @@ -282,7 +282,7 @@ public class GroupMonitor extends ParentComponentMonitor { } else { if (groupScalingEnabled) { if (nwPartitionContext.getNonTerminatedInstancesCount() > - nwPartitionContext.getMinInstanceCount()) { + nwPartitionContext.getMinInstanceCount()) { //send terminating to the specific group instance in the scale down ApplicationBuilder.handleGroupTerminatingEvent(this.appId, this.id, instanceContext.getId()); @@ -505,7 +505,7 @@ public class GroupMonitor extends ParentComponentMonitor { getAppMonitor(appId); //In case if the group instance is not in terminating while application is // terminating, changing the status to terminating - if(applicationMonitor.isTerminating() && instance.getStatus().getCode() < 3) { + if (applicationMonitor.isTerminating() && instance.getStatus().getCode() < 3) { //Sending group instance terminating event ApplicationBuilder.handleGroupTerminatingEvent(appId, id, instanceId); } @@ -672,8 +672,8 @@ public class GroupMonitor extends ParentComponentMonitor { * @return the group level network partition context */ private NetworkPartitionContext getGroupLevelNetworkPartitionContext(String groupAlias, - String appId, - Instance parentInstanceContext) { + String appId, + Instance parentInstanceContext) { NetworkPartitionContext parentLevelNetworkPartitionContext; String deploymentPolicyId = AutoscalerUtil.getDeploymentPolicyIdByAlias(appId, groupAlias); DeploymentPolicy deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId); @@ -780,7 +780,7 @@ public class GroupMonitor extends ParentComponentMonitor { * Creates the group instance and adds the required context objects * * @param group the group - * @param parentInstance the parent instance context + * @param parentInstance the parent instance context * @param partitionContext partition-context used to create the group instance * @param parentLevelNetworkPartitionContext the group level network partition context */
