Repository: stratos Updated Branches: refs/heads/master 7587568a7 -> dd68738a4
http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java index c7d6d02..9e9e84d 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java @@ -98,7 +98,7 @@ public class ApplicationMonitorFactory { * @throws TopologyInConsistentException throws while traversing thr topology */ public static Monitor getGroupMonitor(ParentComponentMonitor parentMonitor, - ApplicationChildContext context, String appId, List<String> instanceId) + ApplicationChildContext context, String appId, List<String> instanceIds) throws DependencyBuilderException, TopologyInConsistentException { GroupMonitor groupMonitor; @@ -107,7 +107,7 @@ public class ApplicationMonitorFactory { try { Group group = ApplicationHolder.getApplications(). getApplication(appId).getGroupRecursively(context.getId()); - groupMonitor = new GroupMonitor(group, appId, instanceId); + groupMonitor = new GroupMonitor(group, appId, instanceIds); groupMonitor.setAppId(appId); if (parentMonitor != null) { groupMonitor.setParent(parentMonitor); @@ -126,6 +126,9 @@ public class ApplicationMonitorFactory { groupMonitor.setHasGroupScalingDependent(true); } } + + //Starting the minimum dependencies + groupMonitor.startMinimumDependencies(group, instanceIds); //TODO*********** make it sync with the topology in the restart /*if (group.getStatus() != groupMonitor.getStatus()) { @@ -154,7 +157,7 @@ public class ApplicationMonitorFactory { */ public static ApplicationMonitor getApplicationMonitor(String appId) throws DependencyBuilderException, - TopologyInConsistentException { + TopologyInConsistentException, PolicyValidationException { ApplicationMonitor applicationMonitor; ApplicationHolder.acquireReadLock(); try { @@ -162,6 +165,7 @@ public class ApplicationMonitorFactory { if (application != null) { applicationMonitor = new ApplicationMonitor(application); applicationMonitor.setHasStartupDependents(false); + applicationMonitor.startMinimumDependencies(application); } else { String msg = "[Application] " + appId + " cannot be found in the Topology"; http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java index 558c612..197a337 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java @@ -71,9 +71,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId ,networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setAverageLoadAverage(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId ,networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setAverageLoadAverage(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -95,9 +95,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Grad of load avg event: [cluster] %s [network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setLoadAverageGradient(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setLoadAverageGradient(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -118,9 +118,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Second Derivation of load avg event: [cluster] %s " + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setLoadAverageSecondDerivative(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setLoadAverageSecondDerivative(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -141,9 +141,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Avg Memory Consumption event: [cluster] %s [network-partition] %s " + "[value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setAverageMemoryConsumption(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setAverageMemoryConsumption(value); } else { if (log.isDebugEnabled()) { log.debug(String @@ -165,9 +165,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Grad of Memory Consumption event: [cluster] %s " + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setMemoryConsumptionGradient(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setMemoryConsumptionGradient(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -188,9 +188,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Second Derivation of Memory Consumption event: [cluster] %s " + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setMemoryConsumptionSecondDerivative(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setMemoryConsumptionSecondDerivative(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -210,9 +210,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { clusterId, networkPartitionId, floatValue)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(null, networkPartitionId); - if(null != networkPartitionContext){ - networkPartitionContext.setAverageRequestsServedPerInstance(floatValue); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, networkPartitionId); + if(null != clusterLevelNetworkPartitionContext){ + clusterLevelNetworkPartitionContext.setAverageRequestsServedPerInstance(floatValue); } else { if (log.isDebugEnabled()) { @@ -241,9 +241,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Average Rif event: [cluster] %s [network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setAverageRequestsInFlight(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setAverageRequestsInFlight(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -264,9 +264,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Gradient of Rif event: [cluster] %s [network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setRequestsInFlightGradient(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setRequestsInFlightGradient(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -287,9 +287,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.debug(String.format("Second derivative of Rif event: [cluster] %s " + "[network-partition] %s [value] %s", clusterId, networkPartitionId, value)); } - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - if (null != networkPartitionContext) { - networkPartitionContext.setRequestsInFlightSecondDerivative(value); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + if (null != clusterLevelNetworkPartitionContext) { + clusterLevelNetworkPartitionContext.setRequestsInFlightSecondDerivative(value); } else { if (log.isDebugEnabled()) { log.debug(String.format("Network partition context is not available for :" + @@ -306,7 +306,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String memberId = memberAverageMemoryConsumptionEvent.getMemberId(); Member member = getMemberByMemberId(memberId); String networkPartitionId = getNetworkPartitionIdByMemberId(memberId); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId()); MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId); if (null == memberStatsContext) { @@ -327,7 +327,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String memberId = memberGradientOfMemoryConsumptionEvent.getMemberId(); Member member = getMemberByMemberId(memberId); String networkPartitionId = getNetworkPartitionIdByMemberId(memberId); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId()); MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId); if (null == memberStatsContext) { @@ -354,7 +354,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String memberId = memberAverageLoadAverageEvent.getMemberId(); Member member = getMemberByMemberId(memberId); String networkPartitionId = getNetworkPartitionIdByMemberId(memberId); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId()); MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId); if (null == memberStatsContext) { @@ -375,7 +375,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String memberId = memberGradientOfLoadAverageEvent.getMemberId(); Member member = getMemberByMemberId(memberId); String networkPartitionId = getNetworkPartitionIdByMemberId(memberId); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId()); MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId); if (null == memberStatsContext) { @@ -396,7 +396,8 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String memberId = memberSecondDerivativeOfLoadAverageEvent.getMemberId(); Member member = getMemberByMemberId(memberId); String networkPartitionId = getNetworkPartitionIdByMemberId(memberId); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); ClusterLevelPartitionContext partitionCtxt = networkPartitionCtxt.getPartitionCtxt(member.getPartitionId()); MemberStatsContext memberStatsContext = partitionCtxt.getMemberStatsContext(memberId); if (null == memberStatsContext) { @@ -429,7 +430,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { return; } - NetworkPartitionContext nwPartitionCtxt; + ClusterLevelNetworkPartitionContext nwPartitionCtxt; nwPartitionCtxt = getNetworkPartitionCtxt(instanceId, member); String partitionId = getPartitionOfMember(memberId); ClusterLevelPartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId); @@ -469,15 +470,15 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String networkPartitionId = memberActivatedEvent.getNetworkPartitionId(); String partitionId = memberActivatedEvent.getPartitionId(); String memberId = memberActivatedEvent.getMemberId(); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); - ClusterLevelPartitionContext clusterMonitorPartitionContext; - clusterMonitorPartitionContext = networkPartitionCtxt.getPartitionCtxt(partitionId); - clusterMonitorPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelPartitionContext clusterLevelPartitionContext; + clusterLevelPartitionContext = networkPartitionCtxt.getPartitionCtxt(partitionId); + clusterLevelPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); if (log.isInfoEnabled()) { log.info(String.format("Member stat context has been added successfully: " + "[member] %s", memberId)); } - clusterMonitorPartitionContext.movePendingMemberToActiveMembers(memberId); + clusterLevelPartitionContext.movePendingMemberToActiveMembers(memberId); StatusChecker.getInstance().onMemberStatusChange(memberActivatedEvent.getClusterId()); } @@ -489,7 +490,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String partitionId = maintenanceModeEvent.getPartitionId(); String memberId = maintenanceModeEvent.getMemberId(); String instanceId = maintenanceModeEvent.getInstanceId(); - NetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelNetworkPartitionContext networkPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); ClusterLevelPartitionContext clusterMonitorPartitionContext = networkPartitionCtxt.getPartitionCtxt(partitionId); clusterMonitorPartitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); if (log.isDebugEnabled()) { @@ -502,7 +503,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { @Override public void handleMemberReadyToShutdownEvent(MemberReadyToShutdownEvent memberReadyToShutdownEvent) { - NetworkPartitionContext nwPartitionCtxt; + ClusterLevelNetworkPartitionContext nwPartitionCtxt; String networkPartitionId = memberReadyToShutdownEvent.getNetworkPartitionId(); String instanceId = memberReadyToShutdownEvent.getInstanceId(); nwPartitionCtxt = getNetworkPartitionCtxt(instanceId, networkPartitionId); @@ -553,8 +554,8 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { String clusterId = memberTerminatedEvent.getClusterId(); String instanceId = memberTerminatedEvent.getInstanceId(); String partitionId = memberTerminatedEvent.getPartitionId(); - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); - ClusterLevelPartitionContext clusterMonitorPartitionContext = networkPartitionContext.getPartitionCtxt(partitionId); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(instanceId, networkPartitionId); + ClusterLevelPartitionContext clusterMonitorPartitionContext = clusterLevelNetworkPartitionContext.getPartitionCtxt(partitionId); clusterMonitorPartitionContext.removeMemberStatsContext(memberId); if (clusterMonitorPartitionContext.removeTerminationPendingMember(memberId)) { @@ -641,7 +642,7 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { Thread memberTerminator = new Thread(new Runnable() { public void run() { - for (NetworkPartitionContext networkPartitionContext : getAllNetworkPartitionCtxts().values()) { + for (ClusterLevelNetworkPartitionContext networkPartitionContext : getAllNetworkPartitionCtxts().values()) { for (ClusterLevelPartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) { //if (log.isDebugEnabled()) { log.info("Starting to terminate all members in cluster [" + getClusterId() + "] Network Partition [ " + @@ -678,15 +679,15 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { memberTerminator.start(); } - public Map<String, NetworkPartitionContext> getNetworkPartitionCtxts(String instanceId) { + public Map<String, ClusterLevelNetworkPartitionContext> getNetworkPartitionCtxts(String instanceId) { VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(instanceId); return vmClusterContext.getNetworkPartitionCtxts(); } - public Map<String, NetworkPartitionContext> getAllNetworkPartitionCtxts() { + public Map<String, ClusterLevelNetworkPartitionContext> getAllNetworkPartitionCtxts() { - Map<String, NetworkPartitionContext> nwPartitionIdToNwPartitionMap = new HashMap<String, NetworkPartitionContext>(); + Map<String, ClusterLevelNetworkPartitionContext> nwPartitionIdToNwPartitionMap = new HashMap<String, ClusterLevelNetworkPartitionContext>(); for (AbstractClusterContext clusterContext : instanceIdToClusterContextMap.values()) { VMClusterContext vmClusterContext = (VMClusterContext) clusterContext; @@ -695,13 +696,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { return nwPartitionIdToNwPartitionMap; } - public NetworkPartitionContext getNetworkPartitionCtxt(String instanceId, String id) { + public ClusterLevelNetworkPartitionContext getNetworkPartitionCtxt(String instanceId, String id) { VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(instanceId); return vmClusterContext.getNetworkPartitionCtxt(id); } - protected NetworkPartitionContext getNetworkPartitionCtxt(String instanceId, Member member) { + protected ClusterLevelNetworkPartitionContext getNetworkPartitionCtxt(String instanceId, Member member) { VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(instanceId); return vmClusterContext.getNetworkPartitionCtxt(member); http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java index d22d20c..dbf73e4 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java @@ -86,7 +86,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor { @Override public void run() { - for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) { + for (ClusterLevelNetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) { // minimum check per partition for (ClusterLevelPartitionContext partitionContext : networkPartitionContext.getPartitionCtxts() http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java index 37b7eda..5e2cc25 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java @@ -116,7 +116,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { Runnable monitoringRunnable = new Runnable() { @Override public void run() { - for (NetworkPartitionContext networkPartitionContext : + for (ClusterLevelNetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) { // store primary members in the network partition context List<String> primaryMemberListInNetworkPartition = new ArrayList<String>(); @@ -285,13 +285,13 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { this.scalingFactorBasedOnDependencies = scalingEvent.getFactor(); VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(scalingEvent.getInstanceId()); - NetworkPartitionContext networkPartitionContext = getNetworkPartitionCtxt(null, scalingEvent.getNetworkPartitionId()); + ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, scalingEvent.getNetworkPartitionId()); - float requiredInstanceCount = networkPartitionContext.getMinInstanceCount() * scalingFactorBasedOnDependencies; + float requiredInstanceCount = clusterLevelNetworkPartitionContext.getMinInstanceCount() * scalingFactorBasedOnDependencies; int roundedRequiredInstanceCount = getRoundedInstanceCount(requiredInstanceCount, vmClusterContext.getAutoscalePolicy().getInstanceRoundingFactor()); - networkPartitionContext.setRequiredInstanceCountBasedOnDependencies(roundedRequiredInstanceCount); + clusterLevelNetworkPartitionContext.setRequiredInstanceCountBasedOnDependencies(roundedRequiredInstanceCount); getDependentScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); getDependentScaleCheckKnowledgeSession().setGlobal("scalingFactor", scalingFactorBasedOnDependencies); @@ -299,7 +299,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { vmClusterContext.getAutoscalePolicy().getInstanceRoundingFactor()); dependentScaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(getScaleCheckKnowledgeSession() - , scaleCheckFactHandle, networkPartitionContext); + , scaleCheckFactHandle, clusterLevelNetworkPartitionContext); } http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java index 8fde5dd..3a2498f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java @@ -21,6 +21,8 @@ package org.apache.stratos.autoscaler.monitor.group; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; +import org.apache.stratos.autoscaler.ParentComponentLevelNetworkPartitionContext; +import org.apache.stratos.autoscaler.algorithm.AutoscaleAlgorithm; import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationChildContext; import org.apache.stratos.autoscaler.applications.dependency.context.GroupChildContext; @@ -33,6 +35,10 @@ import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder; import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; import org.apache.stratos.autoscaler.monitor.events.*; +import org.apache.stratos.autoscaler.partition.PartitionGroup; +import org.apache.stratos.autoscaler.policy.PolicyManager; +import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy; +import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition; import org.apache.stratos.messaging.domain.applications.*; import org.apache.stratos.messaging.domain.instance.context.GroupInstanceContext; import org.apache.stratos.messaging.domain.instance.context.InstanceContext; @@ -63,7 +69,7 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler super(group); this.appId = appId; //starting the minimum start able dependencies - startMinimumDependencies(group, parentInstanceId); + //startMinimumDependencies(group, parentInstanceId); } /** @@ -225,7 +231,7 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler this.groupScalingEnabled = groupScalingEnabled; } - private void startMinimumDependencies(Group group, List<String> parentInstanceIds) + public void startMinimumDependencies(Group group, List<String> parentInstanceIds) throws TopologyInConsistentException { int min = group.getGroupMinInstances(); if(group.getInstanceContextCount() >= min) { @@ -257,11 +263,36 @@ public class GroupMonitor extends ParentComponentMonitor implements EventHandler private void createInstanceAndStartDependency(Group group, List<String> parentInstanceIds) throws TopologyInConsistentException { List<String> instanceIds = new ArrayList<String>(); + String deploymentPolicyName = group.getDeploymentPolicy(); + String instanceId; for(String parentInstanceId : parentInstanceIds) { + InstanceContext parentInstanceContext = this.parent.getInstanceContext(parentInstanceId); + ParentComponentLevelNetworkPartitionContext clusterLevelNetworkPartitionContext; + if(this.networkPartitionCtxts.containsKey(parentInstanceContext)) { + clusterLevelNetworkPartitionContext = this.networkPartitionCtxts. + get(parentInstanceContext.getNetworkPartitionId()); + } else { + clusterLevelNetworkPartitionContext = new ParentComponentLevelNetworkPartitionContext( + parentInstanceContext.getNetworkPartitionId(), + null, null); + this.addNetworkPartitionContext(clusterLevelNetworkPartitionContext); + } + + if(deploymentPolicyName != null) { + DeploymentPolicy deploymentPolicy = PolicyManager.getInstance() + .getDeploymentPolicy(deploymentPolicyName); + PartitionGroup partitionGroup = deploymentPolicy. + getPartitionGroup(parentInstanceContext.getNetworkPartitionId()); + + AutoscaleAlgorithm algorithm = this.getAutoscaleAlgorithm(partitionGroup.getPartitionAlgo()); + Partition partition = algorithm.getNextScaleUpPartition(clusterLevelNetworkPartitionContext, this.id); + } instanceId = createGroupInstance(group, parentInstanceId); instanceIds.add(instanceId); + + } startDependency(group, instanceIds); } http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java index 8a21257..d3e2474 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java @@ -445,12 +445,12 @@ public class RuleTasksDelegator { return (int) Math.ceil(predictedValue); } - public double getLoadAveragePredictedValue(NetworkPartitionContext networkPartitionContext) { + public double getLoadAveragePredictedValue(ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) { double loadAveragePredicted = 0.0d; int totalMemberCount = 0; - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : networkPartitionContext.getPartitionCtxts().values()) { - for (MemberStatsContext memberStatsContext : clusterMonitorPartitionContext.getMemberStatsContexts().values()) { + for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { + for (MemberStatsContext memberStatsContext : partitionContext.getMemberStatsContexts().values()) { float memberAverageLoadAverage = memberStatsContext.getLoadAverage().getAverage(); float memberGredientLoadAverage = memberStatsContext.getLoadAverage().getGradient(); @@ -473,12 +473,12 @@ public class RuleTasksDelegator { } } - public double getMemoryConsumptionPredictedValue(NetworkPartitionContext networkPartitionContext) { + public double getMemoryConsumptionPredictedValue(ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) { double memoryConsumptionPredicted = 0.0d; int totalMemberCount = 0; - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : networkPartitionContext.getPartitionCtxts().values()) { - for (MemberStatsContext memberStatsContext : clusterMonitorPartitionContext.getMemberStatsContexts().values()) { + for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { + for (MemberStatsContext memberStatsContext : partitionContext.getMemberStatsContexts().values()) { float memberMemoryConsumptionAverage = memberStatsContext.getMemoryConsumption().getAverage(); float memberMemoryConsumptionGredient = memberStatsContext.getMemoryConsumption().getGradient(); http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java index d4d0a2e..bd0109c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java @@ -22,7 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.ClusterLevelPartitionContext; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; @@ -172,9 +172,9 @@ public class StatusChecker { */ private boolean clusterActive(VMClusterMonitor monitor) { boolean clusterActive = false; - for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { //minimum check per partition - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : networkPartitionContext.getPartitionCtxts().values()) { + for (ClusterLevelPartitionContext clusterMonitorPartitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { if (clusterMonitorPartitionContext.getMinimumMemberCount() == clusterMonitorPartitionContext.getActiveMemberCount()) { clusterActive = true; } else if (clusterMonitorPartitionContext.getActiveMemberCount() > clusterMonitorPartitionContext.getMinimumMemberCount()) { @@ -196,10 +196,10 @@ public class StatusChecker { */ private boolean clusterMonitorHasMembers(VMClusterMonitor monitor) { boolean hasMember = false; - for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { //minimum check per partition - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : networkPartitionContext.getPartitionCtxts().values()) { - if (clusterMonitorPartitionContext.getNonTerminatedMemberCount() > 0) { + for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { + if (partitionContext.getNonTerminatedMemberCount() > 0) { hasMember = true; } else { hasMember = false; @@ -261,8 +261,8 @@ public class StatusChecker { */ private boolean getClusterInactive(VMClusterMonitor monitor, String partitionId) { boolean clusterInActive = false; - for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { - for (ClusterLevelPartitionContext partition : networkPartitionContext.getPartitionCtxts().values()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { + for (ClusterLevelPartitionContext partition : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { if (partitionId.equals(partition.getPartitionId()) && partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) { clusterInActive = true; http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java index 4d4cb03..cce28cc 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java @@ -22,7 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.ClusterLevelPartitionContext; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor; import org.apache.stratos.autoscaler.status.processor.StatusProcessor; @@ -65,9 +65,9 @@ public class ClusterStatusActiveProcessor extends ClusterStatusProcessor { VMClusterMonitor monitor = (VMClusterMonitor) AutoscalerContext.getInstance(). getClusterMonitor(clusterId); boolean clusterActive = false; - for (NetworkPartitionContext networkPartitionContext : monitor.getNetworkPartitionCtxts(instanceId).values()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getNetworkPartitionCtxts(instanceId).values()) { //minimum check per partition - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : networkPartitionContext.getPartitionCtxts().values()) { + for (ClusterLevelPartitionContext clusterMonitorPartitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { if (clusterMonitorPartitionContext.getMinimumMemberCount() == clusterMonitorPartitionContext.getActiveMemberCount()) { clusterActive = true; } else if (clusterMonitorPartitionContext.getActiveMemberCount() > clusterMonitorPartitionContext.getMinimumMemberCount()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java index 6728371..10f9707 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java @@ -22,7 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.ClusterLevelPartitionContext; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor; import org.apache.stratos.autoscaler.status.processor.StatusProcessor; @@ -91,8 +91,8 @@ public class ClusterStatusInActiveProcessor extends ClusterStatusProcessor { private boolean getClusterInactive(VMClusterMonitor monitor) { boolean clusterInActive = false; - for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { - for (ClusterLevelPartitionContext partition : networkPartitionContext.getPartitionCtxts().values()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { + for (ClusterLevelPartitionContext partition : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { if (partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) { clusterInActive = true; return clusterInActive; http://git-wip-us.apache.org/repos/asf/stratos/blob/746bdc10/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java index 7da0012..f3b6dd1 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java @@ -22,7 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.ClusterLevelPartitionContext; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.ClusterLevelNetworkPartitionContext; import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor; @@ -120,10 +120,10 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor { */ private boolean clusterMonitorHasMembers(VMClusterMonitor monitor) { boolean hasMember = false; - for (NetworkPartitionContext networkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { + for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) { //minimum check per partition - for (ClusterLevelPartitionContext clusterMonitorPartitionContext : networkPartitionContext.getPartitionCtxts().values()) { - if (clusterMonitorPartitionContext.getNonTerminatedMemberCount() > 0) { + for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) { + if (partitionContext.getNonTerminatedMemberCount() > 0) { hasMember = true; } else { hasMember = false;
