Update references of Network partition contexs

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

Branch: refs/heads/master
Commit: 080614ca0c20f78285f47702a6b8c9d98f0a9fea
Parents: dcbc80c
Author: Lahiru Sandaruwan <[email protected]>
Authored: Tue May 19 13:17:41 2015 +0530
Committer: Lahiru Sandaruwan <[email protected]>
Committed: Tue May 19 15:30:57 2015 +0530

----------------------------------------------------------------------
 .../applications/topic/ApplicationBuilder.java  |  5 +-
 .../monitor/component/ApplicationMonitor.java   |  2 +-
 .../monitor/component/GroupMonitor.java         | 61 +++++++++++---------
 3 files changed, 37 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/080614ca/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index b0315b1..7a4df82 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -652,7 +652,7 @@ public class ApplicationBuilder {
         ApplicationMonitor applicationMonitor = 
AutoscalerContext.getInstance().getAppMonitor(appId);
 
         if (applicationMonitor != null) {
-            NetworkPartitionContext context = applicationMonitor.
+            GroupLevelNetworkPartitionContext context = 
(GroupLevelNetworkPartitionContext) applicationMonitor.
                     getNetworkPartitionContext(networkPartitionId);
             if (status == ApplicationStatus.Active) {
                 if (log.isDebugEnabled()) {
@@ -693,7 +693,8 @@ public class ApplicationBuilder {
                                            String instanceId, String 
parentInstanceId) {
         GroupMonitor monitor = getGroupMonitor(appId, groupId);
         if (monitor != null) {
-            NetworkPartitionContext context = 
monitor.getNetworkPartitionContext(networkPartitionId);
+            GroupLevelNetworkPartitionContext context
+                    = (GroupLevelNetworkPartitionContext) 
monitor.getNetworkPartitionContext(networkPartitionId);
             if (status == GroupStatus.Active) {
                 if (log.isDebugEnabled()) {
                     log.debug("Moving pending group instance to active list in 
[group] " + groupId

http://git-wip-us.apache.org/repos/asf/stratos/blob/080614ca/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 f0dfd50..2d5ef12 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
@@ -144,7 +144,7 @@ public class ApplicationMonitor extends 
ParentComponentMonitor {
 
     private void handleScalingMaxOut(InstanceContext instanceContext,
                                      NetworkPartitionContext 
networkPartitionContext) {
-        if (networkPartitionContext.getPendingInstancesCount() == 0) {
+        if (((ApplicationLevelNetworkPartitionContext) 
networkPartitionContext).getPendingInstancesCount() == 0) {
             //handling the application bursting only when there are no pending 
instances found
             try {
                 if (log.isInfoEnabled()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/080614ca/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 a890824..b9f90b4 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
@@ -155,24 +155,26 @@ public class GroupMonitor extends ParentComponentMonitor {
                         }
                     }
 
-                    int nonTerminatedInstancesCount = networkPartitionContext.
+                    GroupLevelNetworkPartitionContext 
groupLevelNetworkPartitionContext
+                            = (GroupLevelNetworkPartitionContext) 
networkPartitionContext;
+                    int nonTerminatedInstancesCount = 
groupLevelNetworkPartitionContext.
                             getNonTerminatedInstancesCount();
-                    int minInstances = ((GroupLevelNetworkPartitionContext) 
networkPartitionContext).
+                    int minInstances = groupLevelNetworkPartitionContext.
                             getMinInstanceCount();
-                    int maxInstances = ((GroupLevelNetworkPartitionContext) 
networkPartitionContext).
+                    int maxInstances = groupLevelNetworkPartitionContext.
                             getMaxInstanceCount();
-                    int activeInstances = 
networkPartitionContext.getActiveInstancesCount();
+                    int activeInstances = 
groupLevelNetworkPartitionContext.getActiveInstancesCount();
                     if (nonTerminatedInstancesCount < minInstances) {
                         int instancesToBeCreated = minInstances - 
nonTerminatedInstancesCount;
                         for (int i = 0; i < instancesToBeCreated; i++) {
                             for (InstanceContext parentInstanceContext : 
parent.
-                                    
getNetworkPartitionContext(networkPartitionContext.getId()).
+                                    
getNetworkPartitionContext(groupLevelNetworkPartitionContext.getId()).
                                     
getInstanceIdToInstanceContextMap().values()) {
                                 //keep on scale-up/scale-down only if the 
application is active
                                 ApplicationMonitor appMonitor = 
AutoscalerContext.getInstance().
                                         getAppMonitor(appId);
-                                int activeAppInstances = appMonitor.
-                                        
getNetworkPartitionContext(networkPartitionContext.getId()).
+                                int activeAppInstances = 
((GroupLevelNetworkPartitionContext) appMonitor.
+                                        
getNetworkPartitionContext(groupLevelNetworkPartitionContext.getId())).
                                         getActiveInstancesCount();
                                 if (activeAppInstances > 0) {
                                     //Creating new group instance based on the 
existing parent instances
@@ -245,30 +247,31 @@ public class GroupMonitor extends ParentComponentMonitor {
         // if it is a force scale-down
         if (allChildrenScaleDown || forceScaleDown) {
             if (hasScalingDependents) {
-                if (nwPartitionContext.getNonTerminatedInstancesCount() >
-                        ((GroupLevelNetworkPartitionContext)
-                                nwPartitionContext).getMinInstanceCount()) {
+                GroupLevelNetworkPartitionContext 
groupLevelNetworkPartitionContext
+                        = (GroupLevelNetworkPartitionContext) 
nwPartitionContext;
+                if 
(groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount() >
+                        
groupLevelNetworkPartitionContext.getMinInstanceCount()) {
                     //Will scale down based on dependent manner
-                    float minInstances = ((GroupLevelNetworkPartitionContext)
-                            nwPartitionContext).getMinInstanceCount();
+                    float minInstances = 
groupLevelNetworkPartitionContext.getMinInstanceCount();
                     float factor =
-                            
(nwPartitionContext.getNonTerminatedInstancesCount() - 1) / minInstances;
-                    ScalingEvent scalingEvent = new ScalingEvent(this.id, 
nwPartitionContext.getId(),
+                            
(groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount() - 1) / 
minInstances;
+                    ScalingEvent scalingEvent = new ScalingEvent(this.id, 
groupLevelNetworkPartitionContext.getId(),
                             instanceContext.getId(), factor);
                     this.parent.onChildScalingEvent(scalingEvent);
                 } else {
                     //Parent has to handle this scale down as by dependent 
scale down
                     ScalingDownBeyondMinEvent newScalingDownBeyondMinEvent =
                             new ScalingDownBeyondMinEvent(this.id,
-                                    nwPartitionContext.getId(), 
instanceContext.getParentInstanceId());
+                                    groupLevelNetworkPartitionContext.getId(), 
instanceContext.getParentInstanceId());
                     
this.parent.onChildScalingDownBeyondMinEvent(newScalingDownBeyondMinEvent);
                 }
 
             } else {
                 if (groupScalingEnabled) {
-                    if (nwPartitionContext.getNonTerminatedInstancesCount() >
-                            ((GroupLevelNetworkPartitionContext)
-                                    nwPartitionContext).getMinInstanceCount()) 
{
+                    GroupLevelNetworkPartitionContext 
groupLevelNetworkPartitionContext
+                            = (GroupLevelNetworkPartitionContext) 
nwPartitionContext;
+                    if 
(groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount() >
+                            
groupLevelNetworkPartitionContext.getMinInstanceCount()) {
                         //send terminating to the specific group instance in 
the scale down
                         
ApplicationBuilder.handleGroupTerminatingEvent(this.appId, this.id,
                                 instanceContext.getId());
@@ -295,7 +298,7 @@ public class GroupMonitor extends ParentComponentMonitor {
     private void createGroupInstanceOnScaling(final NetworkPartitionContext 
networkPartitionContext,
                                               final String parentInstanceId) {
         if (groupScalingEnabled) {
-            if (networkPartitionContext.getPendingInstancesCount() == 0) {
+            if 
(((GroupLevelNetworkPartitionContext)networkPartitionContext).getPendingInstancesCount()
 == 0) {
                 //one of the child is loaded and max out.
                 // Hence creating new group instance
                 if (log.isDebugEnabled()) {
@@ -352,10 +355,11 @@ public class GroupMonitor extends ParentComponentMonitor {
             log.debug("This [Group] " + id + " [scale-up] dependencies. " +
                     "Hence notifying the [parent] " + parent.getId());
         }
+        GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+                = (GroupLevelNetworkPartitionContext) networkPartitionContext;
         //notifying the parent when scale dependents found
-        int maxInstances = ((GroupLevelNetworkPartitionContext)
-                networkPartitionContext).getMaxInstanceCount();
-        if (groupScalingEnabled && maxInstances > networkPartitionContext.
+        int maxInstances = 
groupLevelNetworkPartitionContext.getMaxInstanceCount();
+        if (groupScalingEnabled && maxInstances > 
groupLevelNetworkPartitionContext.
                 getNonTerminatedInstancesCount()) {
             //increase group by one more instance and calculate the factor for 
the group scaling
             // and notify parent to scale all the dependent in parallel with 
this factor
@@ -563,9 +567,10 @@ public class GroupMonitor extends ParentComponentMonitor {
                 get(networkPartitionId);
 
         float factor = scalingEvent.getFactor();
-        int currentInstances = 
networkPartitionContext.getNonTerminatedInstancesCount();
-        float requiredInstances = factor * ((GroupLevelNetworkPartitionContext)
-                networkPartitionContext).getMinInstanceCount();
+        GroupLevelNetworkPartitionContext groupLevelNetworkPartitionContext
+                = (GroupLevelNetworkPartitionContext) networkPartitionContext;
+        int currentInstances = 
groupLevelNetworkPartitionContext.getNonTerminatedInstancesCount();
+        float requiredInstances = factor * 
groupLevelNetworkPartitionContext.getMinInstanceCount();
         int ceilingRequiredInstances = (int) Math.ceil(requiredInstances);
         if (ceilingRequiredInstances > currentInstances) {
 
@@ -580,13 +585,13 @@ public class GroupMonitor extends ParentComponentMonitor {
             for (int count = 0; count < instancesToBeTerminated; count++) {
 
                 //have to scale down
-                if (networkPartitionContext.getPendingInstancesCount() != 0) {
+                if 
(groupLevelNetworkPartitionContext.getPendingInstancesCount() != 0) {
                     ApplicationBuilder.handleGroupTerminatingEvent(appId, 
this.id,
-                            
networkPartitionContext.getPendingInstances().get(0).getId());
+                            
groupLevelNetworkPartitionContext.getPendingInstances().get(0).getId());
 
                 } else {
                     List<InstanceContext> activeInstances =
-                            networkPartitionContext.getActiveInstances();
+                            
groupLevelNetworkPartitionContext.getActiveInstances();
                     ApplicationBuilder.handleGroupTerminatingEvent(appId, 
this.id,
                             activeInstances.get(activeInstances.size() - 
1).toString());
                 }

Reply via email to