Added method comments. Improved exception handling. Removed system.out.println 
statements.


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

Branch: refs/heads/gsoc-projects-2015
Commit: e9eeaa92ee59e9ea003f80308b72d9c77aec9d38
Parents: 00441d4
Author: swapnilpatilRajaram <[email protected]>
Authored: Sun Aug 2 11:15:38 2015 +0000
Committer: swapnilpatilRajaram <[email protected]>
Committed: Sun Aug 2 11:15:38 2015 +0000

----------------------------------------------------------------------
 .../apache/stratos/aws/extension/AWSHelper.java | 72 +++++++++-----------
 .../stratos/aws/extension/AWSLoadBalancer.java  | 39 +++++++++--
 2 files changed, 64 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/e9eeaa92/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
 
b/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
index 2251298..7c4f00a 100644
--- 
a/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
+++ 
b/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSHelper.java
@@ -36,6 +36,8 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.load.balancer.common.domain.*;
 import 
org.apache.stratos.load.balancer.extension.api.exception.LoadBalancerExtensionException;
 
+import com.amazonaws.AmazonClientException;
+import com.amazonaws.AmazonServiceException;
 import com.amazonaws.ClientConfiguration;
 import com.amazonaws.auth.BasicAWSCredentials;
 import com.amazonaws.services.ec2.AmazonEC2Client;
@@ -60,14 +62,13 @@ public class AWSHelper {
        private BasicAWSCredentials awsCredentials;
        private ClientConfiguration clientConfiguration;
 
-       AmazonElasticLoadBalancingClient lbClient;
+       AmazonElasticLoadBalancingClient elbClient;
        AmazonEC2Client ec2Client;
 
        private static final Log log = LogFactory.getLog(AWSHelper.class);
 
        public AWSHelper() throws LoadBalancerExtensionException {
                // Read values for awsAccessKey, awsSecretKey etc. from config 
file
-               // Throw a proper exception / log warning if cant read 
credentials ?
 
                String awsPropertiesFile = System
                                .getProperty(Constants.AWS_PROPERTIES_FILE);
@@ -117,7 +118,7 @@ public class AWSHelper {
                        awsCredentials = new BasicAWSCredentials(awsAccessKey, 
awsSecretKey);
                        clientConfiguration = new ClientConfiguration();
 
-                       lbClient = new 
AmazonElasticLoadBalancingClient(awsCredentials,
+                       elbClient = new 
AmazonElasticLoadBalancingClient(awsCredentials,
                                        clientConfiguration);
 
                        ec2Client = new AmazonEC2Client(awsCredentials, 
clientConfiguration);
@@ -171,17 +172,16 @@ public class AWSHelper {
 
                        
createLoadBalancerRequest.setSecurityGroups(securityGroups);
 
-                       lbClient.setEndpoint(String.format(
+                       elbClient.setEndpoint(String.format(
                                        Constants.ELB_ENDPOINT_URL_FORMAT, 
region));
 
-                       CreateLoadBalancerResult clbResult = lbClient
+                       CreateLoadBalancerResult clbResult = elbClient
                                        
.createLoadBalancer(createLoadBalancerRequest);
 
                        return clbResult.getDNSName();
 
-               } catch (Exception e) {
-                       log.error("Could not create load balancer : " + name + 
".");
-                       e.printStackTrace();
+               } catch (LoadBalancerExtensionException e) {
+                       log.error("Could not create load balancer : " + name + 
".", e);
                        return null;
                }
 
@@ -202,15 +202,12 @@ public class AWSHelper {
                deleteLoadBalancerRequest.setLoadBalancerName(loadBalancerName);
 
                try {
-                       lbClient.setEndpoint(String.format(
+                       elbClient.setEndpoint(String.format(
                                        Constants.ELB_ENDPOINT_URL_FORMAT, 
region));
 
-                       lbClient.deleteLoadBalancer(deleteLoadBalancerRequest);
-                       return;
-
-               } catch (Exception e) {
-                       log.error("Could not delete load balancer : " + 
loadBalancerName);
-                       e.printStackTrace();
+                       elbClient.deleteLoadBalancer(deleteLoadBalancerRequest);
+               } catch (AmazonClientException e) {
+                       log.error("Could not delete load balancer : " + 
loadBalancerName, e);
                }
        }
 
@@ -233,16 +230,15 @@ public class AWSHelper {
                                loadBalancerName, instances);
 
                try {
-                       lbClient.setEndpoint(String.format(
+                       elbClient.setEndpoint(String.format(
                                        Constants.ELB_ENDPOINT_URL_FORMAT, 
region));
 
-                       RegisterInstancesWithLoadBalancerResult result = 
lbClient
+                       RegisterInstancesWithLoadBalancerResult result = 
elbClient
                                        
.registerInstancesWithLoadBalancer(registerInstancesWithLoadBalancerRequest);
 
-               } catch (Exception e) {
+               } catch (AmazonClientException e) {
                        log.error("Could not register instances to load 
balancer "
-                                       + loadBalancerName);
-                       e.printStackTrace();
+                                       + loadBalancerName, e);
                }
        }
 
@@ -265,16 +261,15 @@ public class AWSHelper {
                                loadBalancerName, instances);
 
                try {
-                       lbClient.setEndpoint(String.format(
+                       elbClient.setEndpoint(String.format(
                                        Constants.ELB_ENDPOINT_URL_FORMAT, 
region));
 
-                       DeregisterInstancesFromLoadBalancerResult result = 
lbClient
+                       DeregisterInstancesFromLoadBalancerResult result = 
elbClient
                                        
.deregisterInstancesFromLoadBalancer(deregisterInstancesFromLoadBalancerRequest);
 
-               } catch (Exception e) {
+               } catch (AmazonClientException e) {
                        log.error("Could not de-register instances from load 
balancer "
-                                       + loadBalancerName);
-                       e.printStackTrace();
+                                       + loadBalancerName, e);
                }
        }
 
@@ -297,19 +292,18 @@ public class AWSHelper {
                                loadBalancers);
 
                try {
-                       lbClient.setEndpoint(String.format(
+                       elbClient.setEndpoint(String.format(
                                        Constants.ELB_ENDPOINT_URL_FORMAT, 
region));
 
-                       DescribeLoadBalancersResult result = lbClient
+                       DescribeLoadBalancersResult result = elbClient
                                        
.describeLoadBalancers(describeLoadBalancersRequest);
 
                        if (result.getLoadBalancerDescriptions() != null
                                        && 
result.getLoadBalancerDescriptions().size() > 0)
                                return 
result.getLoadBalancerDescriptions().get(0);
-               } catch (Exception e) {
+               } catch (AmazonClientException e) {
                        log.error("Could not find description of load balancer "
-                                       + loadBalancerName);
-                       e.printStackTrace();
+                                       + loadBalancerName, e);
                }
 
                return null;
@@ -337,10 +331,9 @@ public class AWSHelper {
 
                        return lbDescription.getInstances();
 
-               } catch (Exception e) {
+               } catch (AmazonClientException e) {
                        log.error("Could not find instances attached  load 
balancer "
-                                       + loadBalancerName);
-                       e.printStackTrace();
+                                       + loadBalancerName, e);
                        return null;
                }
        }
@@ -376,7 +369,7 @@ public class AWSHelper {
 
                        return listeners;
 
-               } catch (Exception e) {
+               } catch (AmazonClientException e) {
                        log.error("Could not find description of load balancer "
                                        + loadBalancerName);
                        return null;
@@ -403,10 +396,9 @@ public class AWSHelper {
 
                        return createSecurityGroupResult.getGroupId();
 
-               } catch (Exception e) {
-                       e.printStackTrace();
+               } catch (AmazonClientException e) {
                        throw new LoadBalancerExtensionException(
-                                       "Could not create security group.");
+                                       "Could not create security group.", e);
                }
 
        }
@@ -431,7 +423,7 @@ public class AWSHelper {
                        ec2Client
                                        
.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);
 
-               } catch (Exception e) {
+               } catch (AmazonClientException e) {
                        throw new LoadBalancerExtensionException(
                                        "Could not add inbound rule to security 
group " + groupId
                                                        + ".");
@@ -511,7 +503,7 @@ public class AWSHelper {
         * @param memberInstanceName
         * @return instance id in IaaS
         */
-       public String getAWSInstanceName(final String memberInstanceName) {
+       public String getAWSInstanceName(String memberInstanceName) {
                if (memberInstanceName.contains("/")) {
                        return memberInstanceName
                                        
.substring(memberInstanceName.indexOf("/") + 1);
@@ -526,7 +518,7 @@ public class AWSHelper {
         * @param memberInstanceName
         * @return IaaS region to which member belongs
         */
-       public String getAWSRegion(final String memberInstanceName) {
+       public String getAWSRegion(String memberInstanceName) {
                if (memberInstanceName.contains("/")) {
                        return memberInstanceName.substring(0,
                                        memberInstanceName.indexOf("/"));

http://git-wip-us.apache.org/repos/asf/stratos/blob/e9eeaa92/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
----------------------------------------------------------------------
diff --git 
a/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
 
b/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
index 717e7f8..d7d6b55 100644
--- 
a/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
+++ 
b/extensions/load-balancer/aws-extension/src/main/java/org/apache/stratos/aws/extension/AWSLoadBalancer.java
@@ -19,6 +19,7 @@
 
 package org.apache.stratos.aws.extension;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -32,6 +33,7 @@ import org.apache.stratos.load.balancer.common.domain.*;
 import 
org.apache.stratos.load.balancer.extension.api.exception.LoadBalancerExtensionException;
 import org.apache.stratos.load.balancer.extension.api.LoadBalancer;
 
+import com.amazonaws.AmazonClientException;
 import com.amazonaws.services.elasticloadbalancing.model.Instance;
 import com.amazonaws.services.elasticloadbalancing.model.Listener;
 
@@ -49,6 +51,11 @@ public class AWSLoadBalancer implements LoadBalancer {
                awsHelper = new AWSHelper();
        }
 
+       /* 
+        * configure method iterates over topology and configures the AWS load 
balancers needed.
+        * Configuration may involve creating a new load balancer for a 
cluster, updating existing load balancers
+        * or deleting unwanted load balancers.
+        */
        public boolean configure(Topology topology)
                        throws LoadBalancerExtensionException {
 
@@ -74,9 +81,12 @@ public class AWSLoadBalancer implements LoadBalancer {
                                                // 1. Get all the instances 
attached
                                                // Add/remove instances as 
necessary
 
+                                               // attachedInstances list is 
useful in finding out what all new instances
+                                               // should be attached to this 
load balancer.
                                                List<Instance> 
attachedInstances = awsHelper
                                                                
.getAttachedInstances(loadBalancerName, region);
 
+                                               // clusterMembers stores all 
the members of a cluster.
                                                Collection<Member> 
clusterMembers = cluster
                                                                .getMembers();
 
@@ -90,9 +100,7 @@ public class AWSLoadBalancer implements LoadBalancer {
                                                                // 
attachedInstances
                                                                // add this to 
instancesToAddToLoadBalancer
 
-                                                               
System.out.println("Instance Id : "
-                                                                               
+ member.getInstanceId());
-                                                               
System.out.println("New instance id : "
+                                                               
log.debug("Instance id : "
                                                                                
+ awsHelper.getAWSInstanceName(member
                                                                                
                .getInstanceId()));
 
@@ -121,16 +129,20 @@ public class AWSLoadBalancer implements LoadBalancer {
 
                                                if (clusterMembers.size() > 0){
 
+                                                       // a unique load 
balancer name with user-defined prefix and a sequence number.
                                                        String loadBalancerName 
= awsHelper
                                                                        
.generateLoadBalancerName();
 
                                                        String region = 
awsHelper.getAWSRegion(clusterMembers
                                                                        
.iterator().next().getInstanceId());
 
+                                                       // list of AWS 
listeners obtained using port mappings of one of the members of the cluster.
                                                        List<Listener> 
listenersForThisCluster = awsHelper
                                                                        
.getRequiredListeners(clusterMembers.iterator()
                                                                                
        .next());
 
+                                                       // DNS name of load 
balancer which was created.
+                                                       // This is used in the 
domain mapping of this cluster.
                                                        String 
loadBalancerDNSName = awsHelper
                                                                        
.createLoadBalancer(loadBalancerName,
                                                                                
        listenersForThisCluster, region);
@@ -145,8 +157,7 @@ public class AWSLoadBalancer implements LoadBalancer {
                                                        for (Member member : 
clusterMembers) {
                                                                String 
instanceId = member.getInstanceId();
 
-                                                               
System.out.println("Instance id : " + instanceId);
-                                                               
System.out.println("New instance id : "
+                                                               
log.debug("Instance id : "
                                                                                
+ awsHelper.getAWSInstanceName(instanceId));
 
                                                                Instance 
instance = new Instance();
@@ -187,23 +198,34 @@ public class AWSLoadBalancer implements LoadBalancer {
                        }
 
                        activeClusters.clear();
-               } catch (Exception e) {
+               } catch (LoadBalancerExtensionException e) {
                        throw new LoadBalancerExtensionException(e);
                }
 
                return true;
        }
 
+       /*
+        * start method is called after extension if configured first time.
+        * Does nothing but logs the message.
+        */
        public void start() throws LoadBalancerExtensionException {
 
                log.info("AWS load balancer extension started.");
        }
 
+       /*
+        * reload method is called every time after extension if configured.
+        * Does nothing but logs the message.
+        */
        public void reload() throws LoadBalancerExtensionException {
                // Check what is appropriate to do here.
                log.info("AWS load balancer extension reloaded.");
        }
 
+       /*
+        * stop method deletes load balancers for all clusters in the topology.
+        */
        public void stop() throws LoadBalancerExtensionException {
                // Remove all load balancers
                for (LoadBalancerInfo loadBalancerInfo : 
clusterIdToLoadBalancerMap
@@ -211,13 +233,16 @@ public class AWSLoadBalancer implements LoadBalancer {
                        // remove load balancer
                        awsHelper.deleteLoadBalancer(loadBalancerInfo.getName(),
                                        loadBalancerInfo.getRegion());
-                       // Check what all needs to be done
                }
 
                // Remove domain mappings
        }
 }
 
+/**
+ * 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;

Reply via email to