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
