Repository: stratos
Updated Branches:
  refs/heads/master 9c59f47a8 -> 48ef59a93


Adding pojo structure required for child level policies and related changes


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

Branch: refs/heads/master
Commit: 48ef59a933fcd088f0420f68614cd5b2742d1474
Parents: 9c59f47
Author: Lahiru Sandaruwan <[email protected]>
Authored: Sun Nov 30 12:57:03 2014 +0530
Committer: Lahiru Sandaruwan <[email protected]>
Committed: Sun Nov 30 13:32:26 2014 +0530

----------------------------------------------------------------------
 .../context/cluster/ClusterContextFactory.java  | 46 ++++++++++--------
 .../partition/ClusterLevelPartitionContext.java | 14 ++----
 .../partition/GroupLevelPartitionContext.java   |  5 +-
 .../context/partition/PartitionContext.java     | 10 +++-
 .../ClusterLevelNetworkPartitionContext.java    | 41 ++++++++--------
 .../cluster/VMServiceClusterMonitor.java        |  3 +-
 .../partition/ChildLevelPartition.java          | 25 ++++++++++
 .../ApplicationLevelNetworkPartition.java       | 12 +++++
 .../network/ChildLevelNetworkPartition.java     | 51 +++++++++++---------
 .../partition/network/ChildPolicyHolder.java    | 24 +++++++++
 .../src/main/conf/drools/dependent-scaling.drl  |  4 +-
 .../src/main/conf/drools/mincheck.drl           |  4 +-
 .../src/main/conf/drools/obsoletecheck.drl      |  4 +-
 .../src/main/conf/drools/scaling.drl            |  4 +-
 14 files changed, 162 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
index 476f237..edc0b28 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
@@ -27,6 +27,7 @@ import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetwo
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import 
org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
 import 
org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.ChildLevelPartition;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelNetworkPartition;
 //import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.PartitionManager;
 import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
@@ -93,24 +94,28 @@ public class ClusterContextFactory {
         for (ChildLevelNetworkPartition networkPartition : 
deploymentPolicy.getChildLevelNetworkPartitions()) {
 
             String networkPartitionId = networkPartition.getId();
-            ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = new 
ClusterLevelNetworkPartitionContext(networkPartitionId,
+            ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext
+                    = new 
ClusterLevelNetworkPartitionContext(networkPartitionId,
                     networkPartition.getPartitionAlgo(),
-                    networkPartition.getPartitions());
+                    networkPartition.getChildLevelPartitions());
 
-            for (Partition partition : networkPartition.getPartitions()) {
-                ClusterLevelPartitionContext clusterMonitorPartitionContext = 
new ClusterLevelPartitionContext(partition);
-                
clusterMonitorPartitionContext.setServiceName(cluster.getServiceName());
-                
clusterMonitorPartitionContext.setProperties(cluster.getProperties());
-                
clusterMonitorPartitionContext.setNetworkPartitionId(networkPartition.getId());
+            for (ChildLevelPartition childLevelPartition : 
networkPartition.getChildLevelPartitions()) {
+                Partition applicationLevelPartition = 
deploymentPolicy.getApplicationLevelNetworkPartition(networkPartitionId)
+                        .getPartition(childLevelPartition.getPartitionId());
+                ClusterLevelPartitionContext clusterLevelPartitionContext
+                        = new 
ClusterLevelPartitionContext(childLevelPartition, applicationLevelPartition);
+                
clusterLevelPartitionContext.setServiceName(cluster.getServiceName());
+                
clusterLevelPartitionContext.setProperties(cluster.getProperties());
+                
clusterLevelPartitionContext.setNetworkPartitionId(networkPartition.getId());
 
                 for (Member member : cluster.getMembers()) {
                     String memberId = member.getMemberId();
-                    if 
(member.getPartitionId().equalsIgnoreCase(partition.getId())) {
+                    if 
(member.getPartitionId().equalsIgnoreCase(childLevelPartition.getPartitionId()))
 {
                         MemberContext memberContext = new MemberContext();
                         memberContext.setClusterId(member.getClusterId());
                         memberContext.setMemberId(memberId);
                         memberContext.setInitTime(member.getInitTime());
-                        memberContext.setPartition(partition);
+                        memberContext.setPartition(applicationLevelPartition);
                         
memberContext.setProperties(convertMemberPropsToMemberContextProps(member.getProperties()));
 
                         if (MemberStatus.Activated.equals(member.getStatus())) 
{
@@ -118,7 +123,7 @@ public class ClusterContextFactory {
                                 String msg = String.format("Active member 
loaded from topology and added to active member list, %s", member.toString());
                                 log.debug(msg);
                             }
-                            
clusterMonitorPartitionContext.addActiveMember(memberContext);
+                            
clusterLevelPartitionContext.addActiveMember(memberContext);
 //                            
networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(),
 1);
 //                            
partitionContext.incrementCurrentActiveMemberCount(1);
 
@@ -127,23 +132,23 @@ public class ClusterContextFactory {
                                 String msg = String.format("Pending member 
loaded from topology and added to pending member list, %s", member.toString());
                                 log.debug(msg);
                             }
-                            
clusterMonitorPartitionContext.addPendingMember(memberContext);
+                            
clusterLevelPartitionContext.addPendingMember(memberContext);
 
 //                            
networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(),
 1);
                         } else if 
(MemberStatus.Suspended.equals(member.getStatus())) {
 //                            partitionContext.addFaultyMember(memberId);
                         }
-                        
clusterMonitorPartitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
+                        clusterLevelPartitionContext.addMemberStatsContext(new 
MemberStatsContext(memberId));
                         if (log.isInfoEnabled()) {
                             log.info(String.format("Member stat context has 
been added: [member] %s", memberId));
                         }
                     }
 
                 }
-                
clusterLevelNetworkPartitionContext.addPartitionContext(clusterMonitorPartitionContext);
+                
clusterLevelNetworkPartitionContext.addPartitionContext(clusterLevelPartitionContext);
                 if (log.isInfoEnabled()) {
                     log.info(String.format("Partition context has been added: 
[partition] %s",
-                            clusterMonitorPartitionContext.getPartitionId()));
+                            clusterLevelPartitionContext.getPartitionId()));
                 }
             }
 
@@ -201,9 +206,12 @@ public class ClusterContextFactory {
 //                                                              
PartitionManager.getInstance()
 //                                                                             
 .getNetworkPartitionLbHolder(partitionGroup.getPartitionId());
             // FIXME pick a random partition
-            Partition partition =
-                    networkPartition.getPartitions()[new 
Random().nextInt(networkPartition.getPartitions().length)];
-            ClusterLevelPartitionContext clusterMonitorPartitionContext = new 
ClusterLevelPartitionContext(partition);
+            ChildLevelPartition partition =
+                    networkPartition.getChildLevelPartitions()[new 
Random().nextInt(networkPartition.getChildLevelPartitions().length)];
+            Partition applicationLevelPartition = 
deploymentPolicy.getApplicationLevelNetworkPartition(networkPartitionId)
+                    .getPartition(partition.getPartitionId());
+            ClusterLevelPartitionContext clusterMonitorPartitionContext
+                    = new ClusterLevelPartitionContext(partition, 
applicationLevelPartition);
             
clusterMonitorPartitionContext.setServiceName(cluster.getServiceName());
             
clusterMonitorPartitionContext.setProperties(cluster.getProperties());
             
clusterMonitorPartitionContext.setNetworkPartitionId(networkPartitionId);
@@ -211,14 +219,14 @@ public class ClusterContextFactory {
 
             ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = new 
ClusterLevelNetworkPartitionContext(networkPartitionId,
                     networkPartition.getPartitionAlgo(),
-                    networkPartition.getPartitions());
+                    networkPartition.getChildLevelPartitions());
             for (Member member : cluster.getMembers()) {
                 String memberId = member.getMemberId();
                 if 
(member.getNetworkPartitionId().equalsIgnoreCase(clusterLevelNetworkPartitionContext.getId()))
 {
                     MemberContext memberContext = new MemberContext();
                     memberContext.setClusterId(member.getClusterId());
                     memberContext.setMemberId(memberId);
-                    memberContext.setPartition(partition);
+                    memberContext.setPartition(applicationLevelPartition);
                     memberContext.setInitTime(member.getInitTime());
 
                     if (MemberStatus.Activated.equals(member.getStatus())) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/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 69e3a41..59bedb4 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
@@ -22,6 +22,7 @@ import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.ChildLevelPartition;
 import org.apache.stratos.autoscaler.util.ConfUtil;
 import org.apache.stratos.cloud.controller.stub.domain.Partition;
 import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
@@ -45,7 +46,6 @@ public class ClusterLevelPartitionContext extends 
PartitionContext implements Se
        private static final Log log = 
LogFactory.getLog(ClusterLevelPartitionContext.class);
     private String serviceName;
     private String networkPartitionId;
-    private Partition partition;
     private int minimumMemberCount = 0;
     private int pendingMembersFailureCount = 0;
     private final int PENDING_MEMBER_FAILURE_THRESHOLD = 5;
@@ -86,9 +86,9 @@ public class ClusterLevelPartitionContext extends 
PartitionContext implements Se
         this.terminationPendingMembers = new ArrayList<MemberContext>();
     }
     
-    public ClusterLevelPartitionContext(Partition partition) {
+    public ClusterLevelPartitionContext(ChildLevelPartition 
childLevelPartition, Partition partition) {
 
-        super(partition);
+        super(partition, childLevelPartition);
         this.minimumMemberCount = partition.getPartitionMin();
         this.pendingMembers = new ArrayList<MemberContext>();
         this.activeMembers = new ArrayList<MemberContext>();
@@ -142,14 +142,6 @@ public class ClusterLevelPartitionContext extends 
PartitionContext implements Se
         this.minimumMemberCount = minimumMemberCount;
     }
 
-    public Partition getPartition() {
-        return partition;
-    }
-
-    public void setPartition(Partition partition) {
-        this.partition = partition;
-    }
-    
     public void addPendingMember(MemberContext ctxt) {
         this.pendingMembers.add(ctxt);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
index ee02bd3..a648255 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/GroupLevelPartitionContext.java
@@ -22,6 +22,7 @@ import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.ChildLevelPartition;
 import org.apache.stratos.autoscaler.util.ConfUtil;
 import org.apache.stratos.cloud.controller.stub.domain.Partition;
 import org.apache.stratos.common.constants.StratosConstants;
@@ -86,8 +87,8 @@ public class GroupLevelPartitionContext extends 
PartitionContext implements Seri
         pendingInstanceExpiryTime = instanceExpiryTime;
     }
 
-    public GroupLevelPartitionContext(Partition partition) {
-        super(partition);
+    public GroupLevelPartitionContext(Partition partition, ChildLevelPartition 
childLevelPartition) {
+        super(partition, childLevelPartition);
         this.setPartition(partition);
         this.minimumInstanceCount = partition.getPartitionMin();
         this.partitionId = partition.getId();

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
index ebc92a1..d9113fd 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/PartitionContext.java
@@ -20,8 +20,8 @@ package org.apache.stratos.autoscaler.context.partition;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.ChildLevelPartition;
 import org.apache.stratos.cloud.controller.stub.domain.Partition;
-
 import java.io.Serializable;
 import java.util.*;
 /**
@@ -37,6 +37,7 @@ public class PartitionContext implements Serializable{
     private static final Log log = 
LogFactory.getLog(ClusterLevelPartitionContext.class);
     protected String partitionId;
     private Partition partition;
+    private ChildLevelPartition childLevelPartition;
     private String networkPartitionId;
     // properties
     private Properties properties;
@@ -46,9 +47,10 @@ public class PartitionContext implements Serializable{
 
     }
 
-    public PartitionContext(Partition partition) {
+    public PartitionContext(Partition partition, ChildLevelPartition 
childLevelPartition) {
 
         this.partition = partition;
+        this.childLevelPartition = childLevelPartition;
     }
 
     public Partition getPartition() {
@@ -79,4 +81,8 @@ public class PartitionContext implements Serializable{
         //TODO find and return correct member instance count
         return 0;
     }
+
+    public ChildLevelPartition getChildLevelPartition() {
+        return childLevelPartition;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ClusterLevelNetworkPartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ClusterLevelNetworkPartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ClusterLevelNetworkPartitionContext.java
index 3ed80c7..bf4c29d 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ClusterLevelNetworkPartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/network/ClusterLevelNetworkPartitionContext.java
@@ -25,6 +25,8 @@ import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionCont
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.RequestsInFlight;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.ChildLevelPartition;
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelNetworkPartition;
 import org.apache.stratos.cloud.controller.stub.domain.Partition;
 
 import java.io.Serializable;
@@ -65,7 +67,7 @@ public class ClusterLevelNetworkPartitionContext extends 
NetworkPartitionContext
     //boolean values to keep whether average requests served per instance 
parameters are reset or not
     private boolean averageRequestServedPerInstanceReset = false;
 
-    private final Partition[] partitions;
+    private final ChildLevelPartition[] partitions;
 
     //Following information will keep events details
     private RequestsInFlight requestsInFlight;
@@ -78,13 +80,13 @@ public class ClusterLevelNetworkPartitionContext extends 
NetworkPartitionContext
     //partitions of this network partition
     private final Map<String, ClusterLevelPartitionContext> partitionCtxts;
 
-    public ClusterLevelNetworkPartitionContext(String id, String 
partitionAlgo, Partition[] partitions) {
+    public ClusterLevelNetworkPartitionContext(String id, String 
partitionAlgo, ChildLevelPartition[] partitions) {
 
         //super(id, partitionAlgo, partitions);
         this.id = id;
         this.partitionAlgorithm = partitionAlgo;
         if (partitions == null) {
-            this.partitions = new Partition[0];
+            this.partitions = new ChildLevelPartition[0];
         } else {
             this.partitions = Arrays.copyOf(partitions, partitions.length);
         }
@@ -92,12 +94,12 @@ public class ClusterLevelNetworkPartitionContext extends 
NetworkPartitionContext
         requestsInFlight = new RequestsInFlight();
         loadAverage = new LoadAverage();
         memoryConsumption = new MemoryConsumption();
-        for (Partition partition : partitions) {
-            minInstanceCount += partition.getPartitionMin();
-            maxInstanceCount += partition.getPartitionMax();
-        }
-        requiredInstanceCountBasedOnStats = minInstanceCount;
-        requiredInstanceCountBasedOnDependencies = minInstanceCount;
+//        for (ChildLevelPartition partition : partitions) {
+//            minInstanceCount += partition.get();
+//            maxInstanceCount += partition.getPartitionMax();
+//        }
+//        requiredInstanceCountBasedOnStats = minInstanceCount;
+//        requiredInstanceCountBasedOnDependencies = minInstanceCount;
         instanceIdToClusterInstanceContextMap = new HashMap<String, 
ClusterInstanceContext>();
 
     }
@@ -109,14 +111,14 @@ public class ClusterLevelNetworkPartitionContext extends 
NetworkPartitionContext
     public void setMinInstanceCount(int minInstanceCount) {
         this.minInstanceCount = minInstanceCount;
     }
-
-    public int getMaxInstanceCount() {
-        return maxInstanceCount;
-    }
-
-    public void setMaxInstanceCount(int maxInstanceCount) {
-        this.maxInstanceCount = maxInstanceCount;
-    }
+//
+//    public int getMaxInstanceCount() {
+//        return maxInstanceCount;
+//    }
+//
+//    public void setMaxInstanceCount(int maxInstanceCount) {
+//        this.maxInstanceCount = maxInstanceCount;
+//    }
 
     public int hashCode() {
 
@@ -151,8 +153,7 @@ public class ClusterLevelNetworkPartitionContext extends 
NetworkPartitionContext
 
     @Override
     public String toString() {
-        return "NetworkPartitionContext [id=" + id + "partitionAlgorithm=" + 
partitionAlgorithm + ", minInstanceCount=" +
-                minInstanceCount + ", maxInstanceCount=" + maxInstanceCount + 
"]";
+        return "NetworkPartitionContext [id=" + id + "partitionAlgorithm=" + 
partitionAlgorithm + "]";
     }
 
     public int getCurrentPartitionIndex() {
@@ -382,7 +383,7 @@ public class ClusterLevelNetworkPartitionContext extends 
NetworkPartitionContext
         return partitionAlgorithm;
     }
 
-    public Partition[] getPartitions() {
+    public ChildLevelPartition[] getPartitions() {
         return partitions;
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/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 adbf233..25836b7 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
@@ -291,7 +291,8 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
         ClusterLevelNetworkPartitionContext 
clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, 
scalingEvent.getNetworkPartitionId());
 
 
-        float requiredInstanceCount = 
clusterLevelNetworkPartitionContext.getMinInstanceCount() * 
scalingFactorBasedOnDependencies;
+        //TODO get min instance count from instance context
+        float requiredInstanceCount = 0 ;/* = 
clusterLevelNetworkPartitionContext.getMinInstanceCount() * 
scalingFactorBasedOnDependencies;*/
         int roundedRequiredInstanceCount = 
getRoundedInstanceCount(requiredInstanceCount,
                 
vmClusterContext.getAutoscalePolicy().getInstanceRoundingFactor());
         
clusterLevelNetworkPartitionContext.setRequiredInstanceCountBasedOnDependencies(roundedRequiredInstanceCount);

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/ChildLevelPartition.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/ChildLevelPartition.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/ChildLevelPartition.java
new file mode 100644
index 0000000..e6515c4
--- /dev/null
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/ChildLevelPartition.java
@@ -0,0 +1,25 @@
+package org.apache.stratos.autoscaler.pojo.policy.deployment.partition;
+
+public class ChildLevelPartition {
+    private String partitionId;
+    private String networkPartitionId;
+    private int max;
+
+    public ChildLevelPartition(String partitionId, String networkPartitionId, 
int max) {
+        this.partitionId = partitionId;
+        this.networkPartitionId = networkPartitionId;
+        this.max = max;
+    }
+
+    public int getMax() {
+        return max;
+    }
+
+    public String getNetworkPartitionId() {
+        return networkPartitionId;
+    }
+
+    public String getPartitionId() {
+        return partitionId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
index af44624..ee6c877 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
@@ -53,6 +53,18 @@ public class ApplicationLevelNetworkPartition implements 
Serializable{
     }
 
     /**
+     * Gets the value of the partitions.
+     */
+    public Partition getPartition(String partitionId) {
+        for(Partition partition : partitions){
+            if(partitionId.equals(partition.getId())){
+                return partition;
+            }
+        }
+        return null;
+    }
+
+    /**
      * Gets the value of the id.
      */
     public String getId() {

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
index 0319fe9..a8d6707 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
@@ -19,20 +19,19 @@
 
 package org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network;
 
-import org.apache.stratos.cloud.controller.stub.domain.Partition;
-
+import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.ChildLevelPartition;
 import java.io.Serializable;
-import java.util.Arrays;
+import java.util.Map;
 
 /**
-* The model class for NetworkPartition definition.
+* The model class for NetworkPartition definition at child level.
 */
 public class ChildLevelNetworkPartition implements Serializable {
 
     private static final long serialVersionUID = -8043298009352097370L;
     private String id;
     private String partitionAlgo;
-    private Partition[] partitions;
+    private ChildLevelPartition[] childLevelPartitions;
 
     /**
      * Gets the value of the partitionAlgo property.
@@ -54,23 +53,23 @@ public class ChildLevelNetworkPartition implements 
Serializable {
         this.partitionAlgo = value;
     }
 
-    public void setPartitions(Partition[] partitions) {
-        if (partitions == null) {
-            this.partitions = partitions;
-        } else {
-            this.partitions = Arrays.copyOf(partitions, partitions.length);
-        }
-    }
-
-    /**
-     * Gets the value of the partitions.
-     */
-    public Partition[] getPartitions() {
-        if (partitions == null) {
-            partitions = new Partition[0];
-        }
-        return this.partitions;
-    }
+//    public void setPartitions(Partition[] partitions) {
+//        if (partitions == null) {
+//            this.partitions = partitions;
+//        } else {
+//            this.partitions = Arrays.copyOf(partitions, partitions.length);
+//        }
+//    }
+//
+//    /**
+//     * Gets the value of the partitions.
+//     */
+//    public Partition[] getPartitions() {
+//        if (partitions == null) {
+//            partitions = new Partition[0];
+//        }
+//        return this.partitions;
+//    }
 
     /**
      * Gets the value of the id.
@@ -85,4 +84,12 @@ public class ChildLevelNetworkPartition implements 
Serializable {
     public void setId(String id) {
         this.id = id;
     }
+
+    public ChildLevelPartition[] getChildLevelPartitions() {
+        return childLevelPartitions;
+    }
+
+    public void setChildLevelPartitions(ChildLevelPartition[] 
childLevelPartitions) {
+        this.childLevelPartitions = childLevelPartitions;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildPolicyHolder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildPolicyHolder.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildPolicyHolder.java
new file mode 100644
index 0000000..1011fe0
--- /dev/null
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildPolicyHolder.java
@@ -0,0 +1,24 @@
+package org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network;
+
+
+import java.util.Map;
+
+public class ChildPolicyHolder {
+
+    // Key: networkPartitinID, value: ApplicationLevelNetworkPartition
+    private Map<String, ApplicationLevelNetworkPartition> 
applicationLevelNetworkPartitions;
+    private String deploymentPolicyId;
+
+    public ChildPolicyHolder(Map<String, ApplicationLevelNetworkPartition> 
applicationLevelNetworkPartitions, String deploymentPolicyId) {
+        this.applicationLevelNetworkPartitions = 
applicationLevelNetworkPartitions;
+        this.deploymentPolicyId = deploymentPolicyId;
+    }
+
+    public String getDeploymentPolicyId() {
+        return deploymentPolicyId;
+    }
+
+    public Map<String, ApplicationLevelNetworkPartition> 
getApplicationLevelNetworkPartitions() {
+        return applicationLevelNetworkPartitions;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
 
b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
index 383bb2e..00294d8 100644
--- 
a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
+++ 
b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
@@ -34,8 +34,8 @@ import org.apache.stratos.autoscaler.algorithm.RoundRobin;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
-import org.apache.stratos.cloud.controller.domain.xsd.Partition;
-import org.apache.stratos.cloud.controller.domain.xsd.MemberContext;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
 
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl 
b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
index 4a56361..1c3fc4b 100755
--- a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
@@ -37,8 +37,8 @@ import 
org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.commons.logging.Log;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
-import org.apache.stratos.cloud.controller.domain.xsd.Partition;
-import org.apache.stratos.cloud.controller.domain.xsd.MemberContext;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
 
 global org.apache.stratos.autoscaler.rule.RuleLog log;
 global org.apache.stratos.autoscaler.pojo.policy.PolicyManager $manager;

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl 
b/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
index 87e6999..54d132b 100755
--- 
a/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
+++ 
b/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
@@ -37,8 +37,8 @@ import 
org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.commons.logging.Log;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
-import org.apache.stratos.cloud.controller.domain.xsd.Partition;
-import org.apache.stratos.cloud.controller.domain.xsd.MemberContext;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
 
 global org.apache.stratos.autoscaler.rule.RuleLog log;
 global org.apache.stratos.autoscaler.pojo.policy.PolicyManager $manager;

http://git-wip-us.apache.org/repos/asf/stratos/blob/48ef59a9/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl 
b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
index 639a682..f6c68cc 100644
--- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
@@ -39,8 +39,8 @@ import org.apache.stratos.autoscaler.algorithm.RoundRobin;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
-import org.apache.stratos.cloud.controller.domain.xsd.Partition;
-import org.apache.stratos.cloud.controller.domain.xsd.MemberContext;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
 
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption

Reply via email to