You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2013/12/13 13:37:10 UTC

git commit: Fixes needed for correct Network partition - Partition relation

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 <la...@apache.org>
Authored: Fri Dec 13 18:11:43 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
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);