Updated Branches: refs/heads/master 6baf7daaf -> 0e2aaba49
Fixes needed for correct Network partition - Partition relation Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/0e2aaba4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/0e2aaba4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/0e2aaba4 Branch: refs/heads/master Commit: 0e2aaba4920401eb436aaf25d2a44050dd0c9582 Parents: 6baf7da Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Dec 13 18:11:43 2013 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Dec 13 18:11:43 2013 +0530 ---------------------------------------------------------------------- .../autoscaler/api/AutoScalerServiceImpl.java | 76 +++++++++----------- .../autoscaler/partition/PartitionManager.java | 22 +++--- .../partition/deployers/PartitionDeployer.java | 2 +- .../topology/AutoscalerTopologyReceiver.java | 12 +--- 4 files changed, 50 insertions(+), 62 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0e2aaba4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java index eb179a1..f590364 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java @@ -42,9 +42,9 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ private static final Log log = LogFactory.getLog(AutoScalerServiceImpl.class); PartitionManager partitionManager = PartitionManager.getInstance(); - + public Partition[] getAllAvailablePartitions(){ - return PartitionManager.getInstance().getAllPartitions(); + return partitionManager.getAllPartitions(); } public DeploymentPolicy[] getAllDeploymentPolicies(){ @@ -70,7 +70,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ @Override public boolean addPartition(Partition partition) { - return PartitionManager.getInstance().deployNewPartiotion(partition); + return partitionManager.addNewPartition(partition); } @Override @@ -85,7 +85,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ @Override public Partition getPartition(String partitionId) { - return PartitionManager.getInstance().getPartitionById(partitionId); + return partitionManager.getPartitionById(partitionId); } @Override @@ -131,16 +131,13 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ public void checkLBExistenceAgainstPolicy(String lbClusterId, String deploymentPolicyId) throws NonExistingLBException { boolean exist = false; - Partition[] partitions = getPartitionsOfDeploymentPolicy(deploymentPolicyId); - - for (Partition partition : partitions) { - if (partition != null) { - NetworkPartitionContext nwPartitionCtxt = - partitionManager.getNetworkPartitionOfPartition(partition.getId()); - if (nwPartitionCtxt.isLBExist(lbClusterId)) { - exist = true; - break; - } + for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { + + NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + + if (nwPartitionCtxt.isLBExist(lbClusterId)) { + exist = true; + break; } } @@ -153,22 +150,21 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ } public boolean checkDefaultLBExistenceAgainstPolicy(String deploymentPolicyId) { - Partition[] partitions = getPartitionsOfDeploymentPolicy(deploymentPolicyId); - - for (Partition partition : partitions) { - if (partition != null) { - NetworkPartitionContext nwPartitionCtxt = - partitionManager.getNetworkPartitionOfPartition(partition.getId()); - if (!nwPartitionCtxt.isDefaultLBExist()) { - if (log.isDebugEnabled()) { - log.debug("Default LB does not exist in [network partition] " + - nwPartitionCtxt.getId() + " of [Deployment Policy] " + - deploymentPolicyId); - } - return false; + for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { + + NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + + if (!nwPartitionCtxt.isDefaultLBExist()) { + if (log.isDebugEnabled()) { + log.debug("Default LB does not exist in [network partition] " + + nwPartitionCtxt.getId() + " of [Deployment Policy] " + + deploymentPolicyId); + } + return false; } + } return true; @@ -176,12 +172,11 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ } public boolean checkServiceLBExistenceAgainstPolicy(String serviceName, String deploymentPolicyId) { - Partition[] partitions = getPartitionsOfDeploymentPolicy(deploymentPolicyId); - - for (Partition partition : partitions) { - if (partition != null) { - NetworkPartitionContext nwPartitionCtxt = - partitionManager.getNetworkPartitionOfPartition(partition.getId()); + + for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { + + NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + if (!nwPartitionCtxt.isServiceLBExist(serviceName)) { if (log.isDebugEnabled()) { log.debug("Service LB [service name] "+serviceName+" does not exist in [network partition] " + @@ -191,7 +186,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ } return false; } - } + } return true; @@ -199,12 +194,11 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ } public boolean checkClusterLBExistenceAgainstPolicy(String clusterId, String deploymentPolicyId) { - Partition[] partitions = getPartitionsOfDeploymentPolicy(deploymentPolicyId); - - for (Partition partition : partitions) { - if (partition != null) { - NetworkPartitionContext nwPartitionCtxt = - partitionManager.getNetworkPartitionOfPartition(partition.getId()); + + for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { + + NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + if (!nwPartitionCtxt.isClusterLBExist(clusterId)) { if (log.isDebugEnabled()) { log.debug("Cluster LB [cluster id] "+clusterId+" does not exist in [network partition] " + @@ -214,7 +208,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ } return false; } - } + } return true; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0e2aaba4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java index e73b6db..a199715 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java @@ -43,7 +43,7 @@ public class PartitionManager { private static final Log log = LogFactory.getLog(PartitionManager.class); // Partitions against partitionID - private static Map<String,Partition> partitionListMap = new HashMap<String, Partition>(); + private static Map<String,Partition> partitions = new HashMap<String, Partition>(); private List<NetworkPartitionContext> networkPartitions; @@ -51,7 +51,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); * Key - partition id * Value - reference to NetworkPartition */ - private Map<String, NetworkPartitionContext> partitionIdToNetworkPartition; +// private Map<String, NetworkPartitionContext> partitionIdToNetworkPartition; /* @@ -79,13 +79,13 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); } public boolean partitionExist(String partitionId){ - return partitionListMap.containsKey(partitionId); + return partitions.containsKey(partitionId); } /* * Deploy a new partition to Auto Scaler. */ - public boolean deployNewPartiotion(Partition partition) throws AutoScalerException{ + public boolean addNewPartition(Partition partition) throws AutoScalerException{ String partitionId = partition.getId(); if(this.partitionExist(partition.getId())) throw new AutoScalerException("A parition with the ID " + partitionId + " already exist."); @@ -118,12 +118,12 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); public void addPartitionToInformationModel(Partition partition) { - partitionListMap.put(partition.getId(), partition); + partitions.put(partition.getId(), partition); } - public NetworkPartitionContext getNetworkPartitionOfPartition(String partitionId) { - return this.partitionIdToNetworkPartition.get(partitionId); - } +// public NetworkPartitionContext getNetworkPartitionOfPartition(String partitionId) { +// return this.partitionIdToNetworkPartition.get(partitionId); +// } public NetworkPartitionContext getNetworkPartition(String networkPartitionId) { return this.networkPartitionContexts.get(networkPartitionId); @@ -166,14 +166,14 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); public Partition getPartitionById(String partitionId){ if(partitionExist(partitionId)) - return partitionListMap.get(partitionId); + return partitions.get(partitionId); else return null; } public Partition[] getAllPartitions(){ - //return Collections.unmodifiableList(new ArrayList<Partition>(partitionListMap.values())); - return partitionListMap.values().toArray(new Partition[0]); + //return Collections.unmodifiableList(new ArrayList<Partition>(partitions.values())); + return partitions.values().toArray(new Partition[0]); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0e2aaba4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java index 53d7f6d..c8dced0 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java @@ -84,7 +84,7 @@ public class PartitionDeployer extends AbstractDeployer { while (it.hasNext()) { Partition partition = it.next(); try { - PartitionManager.getInstance().deployNewPartiotion(partition); + PartitionManager.getInstance().addNewPartition(partition); } catch (Exception e) { String msg = "Invalid partition: " + partition.getId() + " in file: " + http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0e2aaba4/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java index 7609718..be0e7af 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/AutoscalerTopologyReceiver.java @@ -21,14 +21,9 @@ package org.apache.stratos.autoscaler.topology; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.AutoscalerContext; -import org.apache.stratos.autoscaler.ClusterMonitor; -import org.apache.stratos.autoscaler.LbClusterMonitor; -import org.apache.stratos.autoscaler.MemberStatsContext; -import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.*; import org.apache.stratos.autoscaler.exception.PartitionValidationException; import org.apache.stratos.autoscaler.exception.PolicyValidationException; -import org.apache.stratos.autoscaler.partition.PartitionManager; import org.apache.stratos.autoscaler.util.AutoscalerUtil; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.messaging.domain.topology.Service; @@ -160,7 +155,7 @@ public class AutoscalerTopologyReceiver implements Runnable { try { TopologyManager.acquireReadLock(); MemberTerminatedEvent e = (MemberTerminatedEvent) event; - String networkPartitionId = PartitionManager.getInstance().getNetworkPartitionOfPartition(e.getPartitionId()).getId() ; + String networkPartitionId = e.getNetworkPartitionId(); AutoscalerContext.getInstance().getMonitor(e.getClusterId()) .getNetworkPartitionCtxt(networkPartitionId).getPartitionCtxt(e.getPartitionId()) .removeMemberStatsContext(e.getMemberId()); @@ -188,9 +183,8 @@ public class AutoscalerTopologyReceiver implements Runnable { MemberActivatedEvent e = (MemberActivatedEvent)event; String memberId = e.getMemberId(); String partitionId = e.getPartitionId(); + String networkPartitionId = e.getNetworkPartitionId(); - String networkPartitionId = PartitionManager.getInstance().getNetworkPartitionOfPartition(e.getPartitionId()).getId() ; - PartitionContext partitionContext; String clusterId = e.getClusterId(); ClusterMonitor monitor = AutoscalerContext.getInstance().getMonitor(clusterId);
