You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2015/12/24 14:04:33 UTC

[16/19] stratos git commit: Refactor aws lb extension

Refactor aws lb extension


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

Branch: refs/heads/stratos-4.1.x
Commit: 7f9bcf77979f02052534b861125321e4b91c8f8c
Parents: 9f7b483
Author: gayangunarathne <ga...@wso2.com>
Authored: Tue Dec 8 11:35:56 2015 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Thu Dec 24 16:55:58 2015 +0530

----------------------------------------------------------------------
 .../apache/stratos/aws/extension/AWSHelper.java |  2 +-
 .../stratos/aws/extension/AWSLoadBalancer.java  | 60 +++++++-------------
 .../aws/extension/AWSStatisticsReader.java      |  5 +-
 3 files changed, 23 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/7f9bcf77/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java b/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
index a12fc96..ef66290 100644
--- a/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
+++ b/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
@@ -957,7 +957,7 @@ public class AWSHelper {
      * Returns the Listeners required for the service. Listeners are derived
      * from the proxy port, port and protocol values of the service.
      *
-     * @param service
+     * @param member
      * @return list of listeners required for the service
      */
     public List<Listener> getRequiredListeners(Member member) throws LoadBalancerExtensionException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/7f9bcf77/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java b/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
index 5cd5556..b365c9b 100644
--- a/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
+++ b/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
@@ -43,9 +43,8 @@ public class AWSLoadBalancer implements LoadBalancer {
 
     private static final Log log = LogFactory.getLog(AWSLoadBalancer.class);
 
-    // A map <clusterId, load balancer info> to store load balancer information
-    // against the cluster id
-    private static ConcurrentHashMap<String, LoadBalancerInfo> clusterIdToLoadBalancerMap = new ConcurrentHashMap<String, LoadBalancerInfo>();
+    // A map <clusterId, load balancer info dto> to store load balancer information against the cluster id
+    private static ConcurrentHashMap<String, LBInfoDTO> clusterIdToLoadBalancerMap = new ConcurrentHashMap<String, LBInfoDTO>();
 
     // Object used to invoke methods related to AWS API
     private AWSHelper awsHelper;
@@ -93,6 +92,8 @@ public class AWSLoadBalancer implements LoadBalancer {
                     Collection<Member> clusterMembers = cluster.getMembers();
 
                     if (clusterMembers.size() > 0) {
+
+	                    //We assume all the members are in the same region.
                         Member aMember = clusterMembers.iterator().next();
 
                         // a unique load balancer name with user-defined prefix and a sequence number.
@@ -119,10 +120,11 @@ public class AWSLoadBalancer implements LoadBalancer {
                                 initialAvailabilityZones.add(region + zone);
                             }
                         }
+
+
 	                    String loadBalancerDNSName =
 			                    createAWSLoadBalancer(loadBalancerName, region, listenersForThisCluster,initialAvailabilityZones);
 
-
                         log.info(String.format("Load balancer %s  created for cluster %s " , loadBalancerDNSName, cluster.getClusterId()));
 
 	                    if(addClusterMembersInfo(clusterMembers, loadBalancerName, region)){
@@ -130,17 +132,17 @@ public class AWSLoadBalancer implements LoadBalancer {
 	                    }
 
                         // persist LB info
+
+	                    LBInfoDTO lbInfoDTO = new LBInfoDTO(loadBalancerName, cluster.getClusterId(), region);
                         try {
-                            persistenceManager.persist(new LBInfoDTO(loadBalancerName, cluster.getClusterId(), region));
+                            persistenceManager.persist(lbInfoDTO);
 
                         } catch (PersistenceException e) {
 	                        log.error(String.format(
 			                        "Unable to persist LB Information for %s , cluster id %s " + loadBalancerName,
 			                        cluster.getClusterId()));
                         }
-
-                        LoadBalancerInfo loadBalancerInfo = new LoadBalancerInfo(loadBalancerName, region);
-                        clusterIdToLoadBalancerMap.put(cluster.getClusterId(),loadBalancerInfo);
+	                    clusterIdToLoadBalancerMap.put(cluster.getClusterId(), lbInfoDTO);
 
                     }
 
@@ -160,8 +162,7 @@ public class AWSLoadBalancer implements LoadBalancer {
                     clustersToRemoveFromMap.add(clusterId);
 
                     if (log.isDebugEnabled()) {
-                        log.debug("Load balancer for cluster " + clusterId
-                                + " needs to be removed.");
+                        log.debug(String.format("Load balancer for cluster %s needs to be removed.", clusterId));
                     }
 
                 }
@@ -179,8 +180,8 @@ public class AWSLoadBalancer implements LoadBalancer {
                     persistenceManager.remove(new LBInfoDTO(loadBalancerName, clusterId, region));
 
                 } catch (PersistenceException e) {
-                    log.error("Unable to persist LB Information for " + loadBalancerName + ", cluster id " +
-                            clusterId);
+                    log.error(String.format("Unable to persist LB Information for[Load Balancer Name] %s [Cluster ID] %s"
+                                            ,loadBalancerName, clusterId));
                 }
                 clusterIdToLoadBalancerMap.remove(clusterId);
             }
@@ -276,10 +277,10 @@ public class AWSLoadBalancer implements LoadBalancer {
 
 	private Boolean updateExistingLoadBalancer(Cluster cluster) {
 		Boolean isUpdated=false;
-		LoadBalancerInfo loadBalancerInfo = clusterIdToLoadBalancerMap.get(cluster.getClusterId());
+		LBInfoDTO lbInfoDTO = clusterIdToLoadBalancerMap.get(cluster.getClusterId());
 
-		String loadBalancerName = loadBalancerInfo.getName();
-		String region = loadBalancerInfo.getRegion();
+		String loadBalancerName = lbInfoDTO.getName();
+		String region = lbInfoDTO.getRegion();
 
 		// Get all the instances attached - Attach newly added instances to load balancer
 
@@ -326,8 +327,7 @@ public class AWSLoadBalancer implements LoadBalancer {
                 LoadBalancerDescription lbDesc = awsHelper.getLoadBalancerDescription(lbInfoDTO.getName(),
                         lbInfoDTO.getRegion());
                 if (lbDesc != null) {
-                    clusterIdToLoadBalancerMap.put(lbInfoDTO.getClusterId(), new LoadBalancerInfo(lbInfoDTO.getName(),
-                            lbInfoDTO.getRegion()));
+                    clusterIdToLoadBalancerMap.put(lbInfoDTO.getClusterId(),lbInfoDTO);
                 } else {
                     // make debug
                     if (log.isInfoEnabled()) {
@@ -361,7 +361,7 @@ public class AWSLoadBalancer implements LoadBalancer {
     public void stop() throws LoadBalancerExtensionException {
         // Remove all load balancers if 'terminate.lbs.on.extension.stop' = true in aws-extension.sh
         if (AWSExtensionContext.getInstance().terminateLBsOnExtensionStop()) {
-            for (Map.Entry<String, LoadBalancerInfo> lbInfoEntry : clusterIdToLoadBalancerMap
+            for (Map.Entry<String, LBInfoDTO> lbInfoEntry : clusterIdToLoadBalancerMap
                     .entrySet()) {
                 // Remove load balancer
                 awsHelper.deleteLoadBalancer(lbInfoEntry.getValue().getName(),
@@ -392,30 +392,8 @@ public class AWSLoadBalancer implements LoadBalancer {
         }
     }
 
-    public static ConcurrentHashMap<String, LoadBalancerInfo> getClusterIdToLoadBalancerMap() {
+    public static ConcurrentHashMap<String, LBInfoDTO> getClusterIdToLoadBalancerMap() {
         return clusterIdToLoadBalancerMap;
     }
 }
 
-/**
- * Used to store load balancer name and the region in which it is created. This
- * helps in finding region while calling API methods to modify/delete a load
- * balancer.
- */
-class LoadBalancerInfo {
-    private String name;
-    private String region;
-
-    public LoadBalancerInfo(String name, String region) {
-        this.name = name;
-        this.region = region;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public String getRegion() {
-        return region;
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/7f9bcf77/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSStatisticsReader.java
----------------------------------------------------------------------
diff --git a/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSStatisticsReader.java b/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSStatisticsReader.java
index 55aca3d..c3ac2eb 100644
--- a/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSStatisticsReader.java
+++ b/extensions/load-balancer/modules/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSStatisticsReader.java
@@ -21,6 +21,7 @@ package org.apache.stratos.aws.extension;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.aws.extension.persistence.dto.LBInfoDTO;
 import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.load.balancer.common.statistics.LoadBalancerStatisticsReader;
 import org.apache.stratos.load.balancer.common.topology.TopologyProvider;
@@ -60,14 +61,14 @@ public class AWSStatisticsReader implements LoadBalancerStatisticsReader {
 
 		int inFlightRequestCount = 0;
 
-		ConcurrentHashMap<String, LoadBalancerInfo> clusterIdToLoadBalancerMap = AWSLoadBalancer
+		ConcurrentHashMap<String, LBInfoDTO> clusterIdToLoadBalancerMap = AWSLoadBalancer
 				.getClusterIdToLoadBalancerMap();
 
 		// Check if load balancer info is available for this cluster.
 		// If yes, then find difference between total requests made to the load balancer and 
 		// total responses generated by instances attached to it.
 		if (clusterIdToLoadBalancerMap.containsKey(clusterId)) {
-			LoadBalancerInfo loadBalancerInfo = clusterIdToLoadBalancerMap
+			LBInfoDTO loadBalancerInfo = clusterIdToLoadBalancerMap
 					.get(clusterId);
 
 			String loadBalancerName = loadBalancerInfo.getName();