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/46a99e78 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/46a99e78 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/46a99e78 Branch: refs/heads/stratos-4.1.x Commit: 46a99e78251a091c6910083311c9843ff8cfc730 Parents: 52966c0 Author: gayangunarathne <[email protected]> Authored: Tue Dec 8 11:35:56 2015 +0530 Committer: gayangunarathne <[email protected]> Committed: Mon Dec 21 10:24:45 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/46a99e78/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/46a99e78/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/46a99e78/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();
