Repository: stratos
Updated Branches:
  refs/heads/master d562e6d18 -> d0116d22c


Extending PartitionCOntext by ClusterLevelPartitionContext


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

Branch: refs/heads/master
Commit: d0116d22c84826f4ad8d2aaafd0a26ae8bb7f8ed
Parents: d562e6d
Author: Lahiru Sandaruwan <[email protected]>
Authored: Fri Nov 28 12:24:00 2014 +0530
Committer: Lahiru Sandaruwan <[email protected]>
Committed: Fri Nov 28 12:24:00 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/ClusterContextFactory.java       |   2 +-
 .../ClusterLevelPartitionContext.java           |  25 ++-
 .../stratos/autoscaler/PartitionContext.java    | 168 ++++---------------
 .../autoscaler/rule/RuleTasksDelegator.java     |   2 +-
 .../stratos/autoscaler/util/AutoscalerUtil.java |  10 +-
 5 files changed, 46 insertions(+), 161 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java
index 7a9d4d6..0c1dcbe 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContextFactory.java
@@ -196,7 +196,7 @@ public class ClusterContextFactory {
                     PartitionManager.getInstance()
                             .getNetworkPartitionLbHolder(networkPartitionId);
 //                                                              
PartitionManager.getInstance()
-//                                                                             
 .getNetworkPartitionLbHolder(partitionGroup.getId());
+//                                                                             
 .getNetworkPartitionLbHolder(partitionGroup.getPartitionId());
             // FIXME pick a random partition
             Partition partition =
                     partitionGroup.getPartitions()[new 
Random().nextInt(partitionGroup.getPartitions().length)];

http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java
index 01f0b8e..ddf8fd7 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterLevelPartitionContext.java
@@ -38,11 +38,10 @@ import org.apache.stratos.common.constants.StratosConstants;
  *
  */
 
-public class ClusterLevelPartitionContext implements Serializable{
+public class ClusterLevelPartitionContext extends PartitionContext implements 
Serializable{
 
        private static final long serialVersionUID = -2920388667345980487L;
        private static final Log log = 
LogFactory.getLog(ClusterLevelPartitionContext.class);
-    private String partitionId;
     private String serviceName;
     private String networkPartitionId;
     private Partition partition;
@@ -81,16 +80,15 @@ public class ClusterLevelPartitionContext implements 
Serializable{
 
     // for the use of tests
     public ClusterLevelPartitionContext(long memberExpiryTime) {
-
+        super(memberExpiryTime);
         this.activeMembers = new ArrayList<MemberContext>();
         this.terminationPendingMembers = new ArrayList<MemberContext>();
-        pendingMemberExpiryTime = memberExpiryTime;
     }
     
     public ClusterLevelPartitionContext(Partition partition) {
-        this.setPartition(partition);
+
+        super(partition);
         this.minimumMemberCount = partition.getPartitionMin();
-        this.partitionId = partition.getId();
         this.pendingMembers = new ArrayList<MemberContext>();
         this.activeMembers = new ArrayList<MemberContext>();
         this.terminationPendingMembers = new ArrayList<MemberContext>();
@@ -134,13 +132,6 @@ public class ClusterLevelPartitionContext implements 
Serializable{
     public void setActiveMembers(List<MemberContext> activeMembers) {
         this.activeMembers = activeMembers;
     }
-    
-    public String getPartitionId() {
-        return partitionId;
-    }
-    public void setPartitionId(String partitionId) {
-        this.partitionId = partitionId;
-    }
 
     public int getMinimumMemberCount() {
         return minimumMemberCount;
@@ -596,7 +587,13 @@ public class ClusterLevelPartitionContext implements 
Serializable{
         }
 
     }
-    
+
+    @Override
+    public int getCurrentElementCount() {
+        //TODO find and return correct member instance count
+        return 0;
+    }
+
     private class PendingMemberWatcher implements Runnable {
         private ClusterLevelPartitionContext ctxt;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
index a13f4e9..7786eed 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
@@ -21,165 +21,53 @@ package org.apache.stratos.autoscaler;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
-import org.apache.stratos.messaging.domain.instance.context.InstanceContext;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
 
+import java.io.Serializable;
+import java.util.*;
 /**
- * This will keep track of partition level information.
+ * This is an object that inserted to the rules engine.
+ * Holds information about a partition.
+ *
+ *
  */
-public abstract class PartitionContext {
-    private static final Log log = LogFactory.getLog(PartitionContext.class);
-    private final String id;
-    private int scaleDownRequestsCount = 0;
-    private float averageRequestsServedPerInstance;
-
-    private int minInstanceCount = 0, maxInstanceCount = 0;
-
-
 
-    int requiredInstanceCountBasedOnStats;
-    private int requiredInstanceCountBasedOnDependencies;
+public class PartitionContext implements Serializable{
 
-    private Map<String, InstanceContext> instanceIdToInstanceContextMap;
+    private static final long serialVersionUID = -2920388667345980487L;
+    private static final Log log = 
LogFactory.getLog(ClusterLevelPartitionContext.class);
+    protected String partitionId;
+    private Partition partition;
 
-    private final Partition[] partitions;
+    // properties
+    private Properties properties;
 
-    //details required for partition selection algorithms
-    private int currentPartitionIndex;
-
-    public PartitionContext(String id, Partition[] partitions) {
-
-        super();
-        this.id = id;
-        if (partitions == null) {
-            this.partitions = new Partition[0];
-        } else {
-            this.partitions = Arrays.copyOf(partitions, partitions.length);
-        }
-        for (Partition partition : partitions) {
-            minInstanceCount += partition.getPartitionMin();
-            maxInstanceCount += partition.getPartitionMax();
-        }
-        requiredInstanceCountBasedOnStats = minInstanceCount;
-        requiredInstanceCountBasedOnDependencies = minInstanceCount;
-        instanceIdToInstanceContextMap = new HashMap<String, 
InstanceContext>();
+    // for the use of tests
+    public PartitionContext(long memberExpiryTime) {
 
     }
 
+    public PartitionContext(Partition partition) {
 
-
-    public int getMinInstanceCount() {
-        return minInstanceCount;
+        this.partition = partition;
     }
 
-    public void setMinInstanceCount(int minInstanceCount) {
-        this.minInstanceCount = minInstanceCount;
+    public Partition getPartition() {
+        return partition;
     }
 
-    public int getMaxInstanceCount() {
-        return maxInstanceCount;
+    public void setPartition(Partition partition) {
+        this.partition = partition;
     }
 
-    public void setMaxInstanceCount(int maxInstanceCount) {
-        this.maxInstanceCount = maxInstanceCount;
+    public String getPartitionId() {
+        return partitionId;
     }
-
-    public int hashCode() {
-
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
-        return result;
-
-    }
-
-    public boolean equals(final Object obj) {
-
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (!(obj instanceof PartitionContext)) {
-            return false;
-        }
-        final PartitionContext other = (PartitionContext) obj;
-        if (this.id == null) {
-            if (this.id != null) {
-                return false;
-            }
-        } else if (!this.id.equals(this.id)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return "NetworkPartitionContext [id=" + id + ", minInstanceCount=" +
-                minInstanceCount + ", maxInstanceCount=" + maxInstanceCount + 
"]";
-    }
-
-    public int getCurrentPartitionIndex() {
-        return currentPartitionIndex;
-    }
-
-    public void setCurrentPartitionIndex(int currentPartitionIndex) {
-        this.currentPartitionIndex = currentPartitionIndex;
-    }
-
-    public String getId() {
-        return id;
+    public void setPartitionId(String partitionId) {
+        this.partitionId = partitionId;
     }
 
-    public Partition[] getPartitions() {
-        return partitions;
+    public int getCurrentElementCount() {
+        //TODO find and return correct member instance count
+        return 0;
     }
-
-    public int getScaleDownRequestsCount() {
-        return scaleDownRequestsCount;
-    }
-
-    public void resetScaleDownRequestsCount() {
-        this.scaleDownRequestsCount = 0;
-    }
-
-    public void increaseScaleDownRequestsCount() {
-        this.scaleDownRequestsCount += 1;
-    }
-
-    public float getRequiredInstanceCountBasedOnStats() {
-        return requiredInstanceCountBasedOnStats;
-    }
-
-    public void setRequiredInstanceCountBasedOnStats(int 
requiredInstanceCountBasedOnStats) {
-        this.requiredInstanceCountBasedOnStats = 
requiredInstanceCountBasedOnStats;
-    }
-
-    public int getRequiredInstanceCountBasedOnDependencies() {
-        return requiredInstanceCountBasedOnDependencies;
-    }
-
-    public void setRequiredInstanceCountBasedOnDependencies(int 
requiredInstanceCountBasedOnDependencies) {
-        this.requiredInstanceCountBasedOnDependencies = 
requiredInstanceCountBasedOnDependencies;
-    }
-
-    public Map<String, InstanceContext> getInstanceIdToInstanceContextMap() {
-        return instanceIdToInstanceContextMap;
-    }
-
-    public void setInstanceIdToInstanceContextMap(Map<String, InstanceContext> 
instanceIdToInstanceContextMap) {
-        this.instanceIdToInstanceContextMap = instanceIdToInstanceContextMap;
-    }
-
-    public void addInstanceContext(InstanceContext context) {
-        this.instanceIdToInstanceContextMap.put(context.getInstanceId(), 
context);
-
-    }
-
-    public abstract int getCurrentElementCount();
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/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 d3e2474..08f379b 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
@@ -246,7 +246,7 @@ public class RuleTasksDelegator {
                 partitionContext.addPendingMember(memberContext);
                 if(log.isDebugEnabled()){
                     log.debug(String.format("Pending member added, [member] %s 
[partition] %s", memberContext.getMemberId(),
-                            memberContext.getPartition().getId()));
+                            memberContext.getPartition().getPartitionId()));
                 }
             } else if(log.isDebugEnabled()){
                 log.debug("Returned member context is null, did not add to 
pending members");

http://git-wip-us.apache.org/repos/asf/stratos/blob/d0116d22/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 0efd346..383f083 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -117,23 +117,23 @@ public class AutoscalerUtil {
 
             NetworkPartitionLbHolder networkPartitionLbHolder =
                                                               
PartitionManager.getInstance()
-                                                                              
.getNetworkPartitionLbHolder(partitionGroup.getId());
+                                                                              
.getNetworkPartitionLbHolder(partitionGroup.getPartitionId());
 //                                                              
PartitionManager.getInstance()
-//                                                                             
 .getNetworkPartitionLbHolder(partitionGroup.getId());
+//                                                                             
 .getNetworkPartitionLbHolder(partitionGroup.getPartitionId());
             // FIXME pick a random partition
             Partition partition =
                                   partitionGroup.getPartitions()[new 
Random().nextInt(partitionGroup.getPartitions().length)];
             PartitionContext partitionContext = new 
PartitionContext(partition);
             partitionContext.setServiceName(cluster.getServiceName());
             partitionContext.setProperties(cluster.getProperties());
-            partitionContext.setNetworkPartitionId(partitionGroup.getId());
+            
partitionContext.setNetworkPartitionId(partitionGroup.getPartitionId());
             partitionContext.setMinimumMemberCount(1);//Here it hard codes the 
minimum value as one for LB cartridge partitions
 
-            NetworkPartitionContext networkPartitionContext = new 
NetworkPartitionContext(partitionGroup.getId(),
+            NetworkPartitionContext networkPartitionContext = new 
NetworkPartitionContext(partitionGroup.getPartitionId(),
                     partitionGroup.getPartitionAlgo(), 
partitionGroup.getPartitions()) ;
             for (Member member : cluster.getMembers()) {
                 String memberId = member.getMemberId();
-                if 
(member.getNetworkPartitionId().equalsIgnoreCase(networkPartitionContext.getId()))
 {
+                if 
(member.getNetworkPartitionId().equalsIgnoreCase(networkPartitionContext.getPartitionId()))
 {
                     MemberContext memberContext = new MemberContext();
                     memberContext.setClusterId(member.getClusterId());
                     memberContext.setMemberId(memberId);

Reply via email to