http://git-wip-us.apache.org/repos/asf/stratos/blob/8ccdeb6d/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 ca374c9..32ec919 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
@@ -41,356 +41,357 @@ import java.util.concurrent.ConcurrentHashMap;
 
 public class AWSLoadBalancer implements LoadBalancer {
 
-       private static final Log log = LogFactory.getLog(AWSLoadBalancer.class);
+    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> to store load balancer information
+    // against the cluster id
+    private static ConcurrentHashMap<String, LoadBalancerInfo> 
clusterIdToLoadBalancerMap = new ConcurrentHashMap<String, LoadBalancerInfo>();
 
-       // Object used to invoke methods related to AWS API
-       private AWSHelper awsHelper;
+    // Object used to invoke methods related to AWS API
+    private AWSHelper awsHelper;
 
-       // PersistenceManager: used to persist LB Information by tuples of <lb 
name, cluster id, region>
-       PersistenceManager persistenceManager;
+    // PersistenceManager: used to persist LB Information by tuples of <lb 
name, cluster id, region>
+    PersistenceManager persistenceManager;
 
-       public AWSLoadBalancer() throws LoadBalancerExtensionException {
-               awsHelper = new AWSHelper();
-               persistenceManager = new FileBasedPersistenceManager();
-               initialize();
-       }
+    public AWSLoadBalancer() throws LoadBalancerExtensionException {
+        awsHelper = new AWSHelper();
+        persistenceManager = new FileBasedPersistenceManager();
+        initialize();
+    }
 
-       /*
-        * 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 {
+    /*
+     * 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 {
 
-               log.info("AWS load balancer extension is being reconfigured.");
+        log.info("AWS load balancer extension is being reconfigured.");
 
-               HashSet<String> activeClusters = new HashSet<String>();
+        HashSet<String> activeClusters = new HashSet<String>();
 
-               for (Service service : topology.getServices()) {
-                       for (Cluster cluster : service.getClusters()) {
-                               // Check if a load balancer is created for this 
cluster
-                               if 
(clusterIdToLoadBalancerMap.containsKey(cluster.getClusterId())) {
-                                       // A load balancer is already present 
for this cluster
-                                       // Get the load balancer and update it.
+        for (Service service : topology.getServices()) {
+            for (Cluster cluster : service.getClusters()) {
+                // Check if a load balancer is created for this cluster
+                if 
(clusterIdToLoadBalancerMap.containsKey(cluster.getClusterId())) {
+                    // A load balancer is already present for this cluster
+                    // Get the load balancer and update it.
 
-                                       if (log.isDebugEnabled()) {
-                                               log.debug("Load balancer for 
cluster "  + cluster.getClusterId()  + " is already present.");
-                                       }
+                    if (log.isDebugEnabled()) {
+                        log.debug("Load balancer for cluster " + 
cluster.getClusterId() + " is already present.");
+                    }
 
-                                       LoadBalancerInfo loadBalancerInfo = 
clusterIdToLoadBalancerMap.get(cluster.getClusterId());
+                    LoadBalancerInfo loadBalancerInfo = 
clusterIdToLoadBalancerMap.get(cluster.getClusterId());
 
-                                       String loadBalancerName = 
loadBalancerInfo.getName();
-                                       String region = 
loadBalancerInfo.getRegion();
+                    String loadBalancerName = loadBalancerInfo.getName();
+                    String region = loadBalancerInfo.getRegion();
 
-                                       // Get all the instances attached - 
Attach newly added instances to load balancer
+                    // Get all the instances attached - Attach newly added 
instances to load balancer
 
-                                       // attachedInstances list is useful in 
finding out what are the new instances which
-                                       // should be attached to this load 
balancer.
-                                       List<Instance> attachedInstances = 
awsHelper.getAttachedInstances(loadBalancerName, region);
+                    // attachedInstances list is useful in finding out what 
are the new instances which
+                    // 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();
+                    // clusterMembers stores all the members of a cluster.
+                    Collection<Member> clusterMembers = cluster.getMembers();
 
-                                       if (clusterMembers.size() > 0) {
-                                               
activeClusters.add(cluster.getClusterId());
+                    if (clusterMembers.size() > 0) {
+                        activeClusters.add(cluster.getClusterId());
 
-                                               List<Instance> 
instancesToAddToLoadBalancer = new ArrayList<Instance>();
-                                               List<String> availabilityZones 
= new ArrayList<String>();
+                        List<Instance> instancesToAddToLoadBalancer = new 
ArrayList<Instance>();
+                        List<String> availabilityZones = new 
ArrayList<String>();
 
-                                               for (Member member : 
clusterMembers) {
-                                                       // if instance id of 
member is not in
-                                                       // attachedInstances
-                                                       // add this to 
instancesToAddToLoadBalancer
-                                                       Instance instance = new 
Instance(awsHelper.getAWSInstanceName(member.getInstanceId()));
+                        for (Member member : clusterMembers) {
+                            // if instance id of member is not in
+                            // attachedInstances
+                            // add this to instancesToAddToLoadBalancer
+                            Instance instance = new 
Instance(awsHelper.getAWSInstanceName(member.getInstanceId()));
 
-                                                       if (attachedInstances 
== null || !attachedInstances.contains(instance)) {
-                                                               
instancesToAddToLoadBalancer.add(instance);
+                            if (attachedInstances == null || 
!attachedInstances.contains(instance)) {
+                                instancesToAddToLoadBalancer.add(instance);
 
-                                                               if 
(log.isDebugEnabled()) {
-                                                                       
log.debug("Instance " + awsHelper.getAWSInstanceName(member.getInstanceId())  +
+                                if (log.isDebugEnabled()) {
+                                    log.debug("Instance " + 
awsHelper.getAWSInstanceName(member.getInstanceId()) +
                                             " needs to be registered to load 
balancer " + loadBalancerName);
-                                                               }
-
-                                                               // LB Common 
Member has a property 'EC2_AVAILABILITY_ZONE' points to the ec2 availability 
zone
-                                                               // for this 
member. Use the property value to update the LB about the relevant zone
-                                                               String 
availabilityZone = getEC2AvaialbilityZoneOfMember(member);
-                                                               if 
(availabilityZone != null) {
-                                                                       
availabilityZones.add(availabilityZone);
-                                                               }
-                                                       }
-                                               }
-
-                                               if 
(instancesToAddToLoadBalancer.size() > 0) {
-                                                       
awsHelper.registerInstancesToLoadBalancer(
-                                                                       
loadBalancerName,
-                                                                       
instancesToAddToLoadBalancer, region);
-                                               }
-
-                                               // update LB with the zones
-                                               if 
(!availabilityZones.isEmpty()) {
-                                                       
awsHelper.addAvailabilityZonesForLoadBalancer(loadBalancerName, 
availabilityZones, region);
-                                               }
-                                       }
-
-                               } else {
-                                       // Create a new load balancer for this 
cluster
-                                       Collection<Member> clusterMembers = 
cluster.getMembers();
-
-                                       if (clusterMembers.size() > 0) {
-                                               Member aMember = 
clusterMembers.iterator().next();
-
-                                               // a unique load balancer name 
with user-defined prefix and a sequence number.
-                                               String loadBalancerName = 
awsHelper.generateLoadBalancerName(cluster.getServiceName());
-
-                                               String region = 
awsHelper.getAWSRegion(aMember.getInstanceId());
-
-                                               // list of AWS listeners 
obtained using port mappings of one of the members of the cluster.
-                                               List<Listener> 
listenersForThisCluster = awsHelper.getRequiredListeners(aMember);
-
-                                               // Get the zone from the first 
member and use in LB creation. Zone will be updated for each member below
-                                               String initialAvailabilityZone 
= getEC2AvaialbilityZoneOfMember(aMember);
-                                               if (initialAvailabilityZone == 
null) {
-                                                       // could not get the 
availability zone from the Member property 'EC2_AVAILABILITY_ZONE'
-                                                       // use the default 
(<region>a)
-                                                       initialAvailabilityZone 
= awsHelper.getAvailabilityZoneFromRegion(region);
-                                               }
-
-                                               // Returns DNS name of load 
balancer which was created.
-                                               // This is used in the domain 
mapping of this cluster.
-                                               String loadBalancerDNSName = 
awsHelper.createLoadBalancer(loadBalancerName, listenersForThisCluster,
+                                }
+
+                                // LB Common Member has a property 
'EC2_AVAILABILITY_ZONE' points to the ec2 availability zone
+                                // for this member. Use the property value to 
update the LB about the relevant zone
+                                String availabilityZone = 
getEC2AvaialbilityZoneOfMember(member);
+                                if (availabilityZone != null) {
+                                    availabilityZones.add(availabilityZone);
+                                }
+                            }
+                        }
+
+                        if (instancesToAddToLoadBalancer.size() > 0) {
+                            awsHelper.registerInstancesToLoadBalancer(
+                                    loadBalancerName,
+                                    instancesToAddToLoadBalancer, region);
+                        }
+
+                        // update LB with the zones
+                        if (!availabilityZones.isEmpty()) {
+                            
awsHelper.addAvailabilityZonesForLoadBalancer(loadBalancerName, 
availabilityZones, region);
+                        }
+                    }
+
+                } else {
+                    // Create a new load balancer for this cluster
+                    Collection<Member> clusterMembers = cluster.getMembers();
+
+                    if (clusterMembers.size() > 0) {
+                        Member aMember = clusterMembers.iterator().next();
+
+                        // a unique load balancer name with user-defined 
prefix and a sequence number.
+                        String loadBalancerName = 
awsHelper.generateLoadBalancerName(cluster.getServiceName());
+
+                        String region = 
awsHelper.getAWSRegion(aMember.getInstanceId());
+
+                        // list of AWS listeners obtained using port mappings 
of one of the members of the cluster.
+                        List<Listener> listenersForThisCluster = 
awsHelper.getRequiredListeners(aMember);
+
+                        // Get the zone from the first member and use in LB 
creation. Zone will be updated for each member below
+                        String initialAvailabilityZone = 
getEC2AvaialbilityZoneOfMember(aMember);
+                        if (initialAvailabilityZone == null) {
+                            // could not get the availability zone from the 
Member property 'EC2_AVAILABILITY_ZONE'
+                            // use the default (<region>a)
+                            initialAvailabilityZone = 
awsHelper.getAvailabilityZoneFromRegion(region);
+                        }
+
+                        // Returns 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, initialAvailabilityZone, 
AWSExtensionContext.getInstance().isOperatingInVPC());
 
-                                               // enable connection draining 
(default) and cross zone load balancing (if specified in aws-extension.sh)
-                                               
awsHelper.modifyLBAttributes(loadBalancerName, region, 
AWSExtensionContext.getInstance().
+                        // enable connection draining (default) and cross zone 
load balancing (if specified in aws-extension.sh)
+                        awsHelper.modifyLBAttributes(loadBalancerName, region, 
AWSExtensionContext.getInstance().
                                 isCrossZoneLoadBalancingEnabled(), true);
 
-                                               // Add the inbound rule the 
security group of the load balancer
-                                               // For each listener, add a new 
rule with load balancer port as allowed protocol in the security group.
-                                               for (Listener listener : 
listenersForThisCluster) {
-                                                       int port = 
listener.getLoadBalancerPort();
+                        // Add the inbound rule the security group of the load 
balancer
+                        // For each listener, add a new rule with load 
balancer port as allowed protocol in the security group.
+                        for (Listener listener : listenersForThisCluster) {
+                            int port = listener.getLoadBalancerPort();
 
-                                                       for (String protocol : 
awsHelper.getAllowedProtocolsForLBSecurityGroup()) {
-                                                               
awsHelper.addInboundRuleToSecurityGroup(awsHelper.getSecurityGroupId(awsHelper
-                                                                               
                                                .getLbSecurityGroupName(), 
region), region, protocol, port);
-                                                       }
-                                               }
+                            for (String protocol : 
awsHelper.getAllowedProtocolsForLBSecurityGroup()) {
+                                
awsHelper.addInboundRuleToSecurityGroup(awsHelper.getSecurityGroupId(awsHelper
+                                        .getLbSecurityGroupName(), region), 
region, protocol, port);
+                            }
+                        }
 
-                                               log.info("Load balancer '" + 
loadBalancerDNSName  + "' created for cluster '" + cluster.getClusterId());
+                        log.info("Load balancer '" + loadBalancerDNSName + "' 
created for cluster '" + cluster.getClusterId());
 
-                                               // Register instances in the 
cluster to load balancer
-                                               List<Instance> instances = new 
ArrayList<Instance>();
-                                               List<String> availabilityZones 
= new ArrayList<String>();
+                        // Register instances in the cluster to load balancer
+                        List<Instance> instances = new ArrayList<Instance>();
+                        List<String> availabilityZones = new 
ArrayList<String>();
 
-                                               for (Member member : 
clusterMembers) {
-                                                       String instanceId = 
member.getInstanceId();
+                        for (Member member : clusterMembers) {
+                            String instanceId = member.getInstanceId();
 
-                                                       if 
(log.isDebugEnabled()) {
-                                                               
log.debug("Instance " + awsHelper.getAWSInstanceName(instanceId)  + " needs to 
be registered to load balancer "
+                            if (log.isDebugEnabled()) {
+                                log.debug("Instance " + 
awsHelper.getAWSInstanceName(instanceId) + " needs to be registered to load 
balancer "
                                         + loadBalancerName);
-                                                       }
-
-                                                       Instance instance = new 
Instance();
-                                                       
instance.setInstanceId(awsHelper.getAWSInstanceName(instanceId));
-
-                                                       instances.add(instance);
-                                                       // LB Common Member has 
a property 'EC2_AVAILABILITY_ZONE' which points to the ec2 availability
-                                                       // zone for this 
member. Use the property value to update the LB about the relevant zone
-                                                       String availabilityZone 
= getEC2AvaialbilityZoneOfMember(member);
-                                                       if (availabilityZone != 
null) {
-                                                               
availabilityZones.add(availabilityZone);
-                                                       }
-                                               }
-
-                                               
awsHelper.registerInstancesToLoadBalancer(loadBalancerName, instances, region);
-
-                                               // update LB with the zones
-                                               if 
(!availabilityZones.isEmpty()) {
-                                                       
awsHelper.addAvailabilityZonesForLoadBalancer(loadBalancerName, 
availabilityZones, region);
-                                               }
-
-                                               // add stickiness policy
-                                               if 
(awsHelper.getAppStickySessionCookie() != null && 
!awsHelper.getAppStickySessionCookie().isEmpty()) {
-                                                       
CreateAppCookieStickinessPolicyResult result = 
awsHelper.createStickySessionPolicy(loadBalancerName,
+                            }
+
+                            Instance instance = new Instance();
+                            
instance.setInstanceId(awsHelper.getAWSInstanceName(instanceId));
+
+                            instances.add(instance);
+                            // LB Common Member has a property 
'EC2_AVAILABILITY_ZONE' which points to the ec2 availability
+                            // zone for this member. Use the property value to 
update the LB about the relevant zone
+                            String availabilityZone = 
getEC2AvaialbilityZoneOfMember(member);
+                            if (availabilityZone != null) {
+                                availabilityZones.add(availabilityZone);
+                            }
+                        }
+
+                        
awsHelper.registerInstancesToLoadBalancer(loadBalancerName, instances, region);
+
+                        // update LB with the zones
+                        if (!availabilityZones.isEmpty()) {
+                            
awsHelper.addAvailabilityZonesForLoadBalancer(loadBalancerName, 
availabilityZones, region);
+                        }
+
+                        // add stickiness policy
+                        if (awsHelper.getAppStickySessionCookie() != null && 
!awsHelper.getAppStickySessionCookie().isEmpty()) {
+                            CreateAppCookieStickinessPolicyResult result = 
awsHelper.createStickySessionPolicy(loadBalancerName,
                                     awsHelper.getAppStickySessionCookie(), 
Constants.STICKINESS_POLICY, region);
 
-                                                       if (result != null) {
-                                                               // Take a 
single port mapping from a member, and apply the policy for
-                                                               // the LB 
Listener port (Proxy port of the port mapping)
-                                                               
awsHelper.applyPolicyToLBListenerPorts(aMember.getPorts(), loadBalancerName,
+                            if (result != null) {
+                                // Take a single port mapping from a member, 
and apply the policy for
+                                // the LB Listener port (Proxy port of the 
port mapping)
+                                
awsHelper.applyPolicyToLBListenerPorts(aMember.getPorts(), loadBalancerName,
                                         Constants.STICKINESS_POLICY, region);
-                                                       }
-                                               }
-
-                                               // persist LB info
-                                               try {
-                                                       
persistenceManager.persist(new LBInfoDTO(loadBalancerName, 
cluster.getClusterId(), region));
-
-                                               } catch (PersistenceException 
e) {
-                                                       log.error("Unable to 
persist LB Information for " + loadBalancerName + ", cluster id " +
-                                                               
cluster.getClusterId());
-                                               }
-
-                                               LoadBalancerInfo 
loadBalancerInfo = new LoadBalancerInfo(
-                                                               
loadBalancerName, region);
-
-                                               
clusterIdToLoadBalancerMap.put(cluster.getClusterId(),
-                                                               
loadBalancerInfo);
-                                               
activeClusters.add(cluster.getClusterId());
-                                       }
-
-                                       pause(3000);
-                               }
-                       }
-               }
-
-               // if 'terminate.lb.on.cluster.removal' = true in 
aws-extension.sh
-               if 
(AWSExtensionContext.getInstance().terminateLBOnClusterRemoval()) {
-
-                       // Find out clusters which were present earlier but are 
not now.
-                       List<String> clustersToRemoveFromMap = new 
ArrayList<String>();
-                       // TODO: improve using an iterator and removing the 
unwanted cluster id in this loop
-                       for (String clusterId : 
clusterIdToLoadBalancerMap.keySet()) {
-                               if (!activeClusters.contains(clusterId)) {
-                                       clustersToRemoveFromMap.add(clusterId);
-
-                                       if (log.isDebugEnabled()) {
-                                               log.debug("Load balancer for 
cluster " + clusterId
-                                                               + " needs to be 
removed.");
-                                       }
-
-                               }
-                       }
-
-
-                       // Delete load balancers associated with these clusters.
-                       for (String clusterId : clustersToRemoveFromMap) {
-                               // Remove load balancer for this cluster.
-                               final String loadBalancerName = 
clusterIdToLoadBalancerMap.get(clusterId).getName();
-                               final String region = 
clusterIdToLoadBalancerMap.get(clusterId).getRegion();
-                               awsHelper.deleteLoadBalancer(loadBalancerName, 
region);
-                               //remove and persist
-                               try {
-                                       persistenceManager.remove(new 
LBInfoDTO(loadBalancerName, clusterId, region));
-
-                               } catch (PersistenceException e) {
-                                       log.error("Unable to persist LB 
Information for " + loadBalancerName + ", cluster id " +
-                                                       clusterId);
-                               }
-                               clusterIdToLoadBalancerMap.remove(clusterId);
-                       }
-               }
-
-               activeClusters.clear();
-               log.info("AWS load balancer extension was reconfigured as per 
the topology.");
-               return true;
-       }
-
-       private String getEC2AvaialbilityZoneOfMember(Member member) {
-               if (member.getProperties() != null) {
+                            }
+                        }
+
+                        // persist LB info
+                        try {
+                            persistenceManager.persist(new 
LBInfoDTO(loadBalancerName, cluster.getClusterId(), region));
+
+                        } catch (PersistenceException e) {
+                            log.error("Unable to persist LB Information for " 
+ loadBalancerName + ", cluster id " +
+                                    cluster.getClusterId());
+                        }
+
+                        LoadBalancerInfo loadBalancerInfo = new 
LoadBalancerInfo(
+                                loadBalancerName, region);
+
+                        clusterIdToLoadBalancerMap.put(cluster.getClusterId(),
+                                loadBalancerInfo);
+                        activeClusters.add(cluster.getClusterId());
+                    }
+
+                    pause(3000);
+                }
+            }
+        }
+
+        // if 'terminate.lb.on.cluster.removal' = true in aws-extension.sh
+        if (AWSExtensionContext.getInstance().terminateLBOnClusterRemoval()) {
+
+            // Find out clusters which were present earlier but are not now.
+            List<String> clustersToRemoveFromMap = new ArrayList<String>();
+            // TODO: improve using an iterator and removing the unwanted 
cluster id in this loop
+            for (String clusterId : clusterIdToLoadBalancerMap.keySet()) {
+                if (!activeClusters.contains(clusterId)) {
+                    clustersToRemoveFromMap.add(clusterId);
+
+                    if (log.isDebugEnabled()) {
+                        log.debug("Load balancer for cluster " + clusterId
+                                + " needs to be removed.");
+                    }
+
+                }
+            }
+
+
+            // Delete load balancers associated with these clusters.
+            for (String clusterId : clustersToRemoveFromMap) {
+                // Remove load balancer for this cluster.
+                final String loadBalancerName = 
clusterIdToLoadBalancerMap.get(clusterId).getName();
+                final String region = 
clusterIdToLoadBalancerMap.get(clusterId).getRegion();
+                awsHelper.deleteLoadBalancer(loadBalancerName, region);
+                //remove and persist
+                try {
+                    persistenceManager.remove(new LBInfoDTO(loadBalancerName, 
clusterId, region));
+
+                } catch (PersistenceException e) {
+                    log.error("Unable to persist LB Information for " + 
loadBalancerName + ", cluster id " +
+                            clusterId);
+                }
+                clusterIdToLoadBalancerMap.remove(clusterId);
+            }
+        }
+
+        activeClusters.clear();
+        log.info("AWS load balancer extension was reconfigured as per the 
topology.");
+        return true;
+    }
+
+    private String getEC2AvaialbilityZoneOfMember(Member member) {
+        if (member.getProperties() != null) {
             return 
member.getProperties().getProperty(Constants.EC2_AVAILABILITY_ZONE_PROPERTY);
         }
 
-               return null;
-       }
-
-       /*
-        * 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.");
-       }
-
-       private void initialize() {
-               // load persisted LB information
-               Set<LBInfoDTO> lbInfo = null;
-               try {
-                       lbInfo = persistenceManager.retrieve();
-
-               } catch (PersistenceException e) {
-                       log.error("Unable to retrieve persisted LB 
Information", e);
-               }
-
-               if (lbInfo != null) {
-                       for (LBInfoDTO lbInfoDTO : lbInfo) {
-                               LoadBalancerDescription lbDesc = 
awsHelper.getLoadBalancerDescription(lbInfoDTO.getName(),
-                                               lbInfoDTO.getRegion());
-                               if (lbDesc != null) {
-                                       
clusterIdToLoadBalancerMap.put(lbInfoDTO.getClusterId(), new 
LoadBalancerInfo(lbInfoDTO.getName(),
-                                                       lbInfoDTO.getRegion()));
-                               } else {
-                                       // make debug
-                                       if (log.isInfoEnabled()) {
-                                               log.info("Unable to locate LB " 
+ lbInfoDTO.getName());
-                                       }
-                                       // remove the persisted entry
-                                       try {
-                                               persistenceManager.remove(new 
LBInfoDTO(lbInfoDTO.getName(), lbInfoDTO.getClusterId(), 
lbInfoDTO.getRegion()));
-
-                                       } catch (PersistenceException e) {
-                                               log.error("Unable to remove 
persisted LB Information", e);
-                                       }
-                               }
-
-                       }
-               }
-       }
-
-       /*
-        * 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 if 
'terminate.lbs.on.extension.stop' = true in aws-extension.sh
-               if 
(AWSExtensionContext.getInstance().terminateLBsOnExtensionStop()) {
-                       for (Map.Entry<String, LoadBalancerInfo> lbInfoEntry : 
clusterIdToLoadBalancerMap
-                                       .entrySet()) {
-                               // Remove load balancer
-                               
awsHelper.deleteLoadBalancer(lbInfoEntry.getValue().getName(),
-                                               
lbInfoEntry.getValue().getRegion());
-
-                               // remove the persisted entry
-                               try {
-                                       persistenceManager.remove(new 
LBInfoDTO(lbInfoEntry.getValue().getName(), lbInfoEntry.getKey(),
-                                                       
lbInfoEntry.getValue().getRegion()));
-
-                               } catch (PersistenceException e) {
-                                       log.error("Unable to remove persisted 
LB Information", e);
-                               }
-                       }
-               } else {
-                       if (log.isInfoEnabled()) {
-                               log.info("Not terminating LBs since 
terminate.lbs.on.extension.stop=false");
-                       }
-               }
-       }
-
-       private static void pause (long duration) {
-               // sleep to stop AWS Rate Exceeding: Caused by: 
com.amazonaws.AmazonServiceException: Rate exceeded
-               // (Service: AmazonElasticLoadBalancing; Status Code: 400; 
Error Code: Throttling; Request ID: xxx-xxx)
-               try {
-                       Thread.sleep(duration);
-               } catch (InterruptedException ignored) {}
-       }
-
-       public static ConcurrentHashMap<String, LoadBalancerInfo> 
getClusterIdToLoadBalancerMap() {
-               return clusterIdToLoadBalancerMap;
-       }
+        return null;
+    }
+
+    /*
+     * 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.");
+    }
+
+    private void initialize() {
+        // load persisted LB information
+        Set<LBInfoDTO> lbInfo = null;
+        try {
+            lbInfo = persistenceManager.retrieve();
+
+        } catch (PersistenceException e) {
+            log.error("Unable to retrieve persisted LB Information", e);
+        }
+
+        if (lbInfo != null) {
+            for (LBInfoDTO lbInfoDTO : lbInfo) {
+                LoadBalancerDescription lbDesc = 
awsHelper.getLoadBalancerDescription(lbInfoDTO.getName(),
+                        lbInfoDTO.getRegion());
+                if (lbDesc != null) {
+                    clusterIdToLoadBalancerMap.put(lbInfoDTO.getClusterId(), 
new LoadBalancerInfo(lbInfoDTO.getName(),
+                            lbInfoDTO.getRegion()));
+                } else {
+                    // make debug
+                    if (log.isInfoEnabled()) {
+                        log.info("Unable to locate LB " + lbInfoDTO.getName());
+                    }
+                    // remove the persisted entry
+                    try {
+                        persistenceManager.remove(new 
LBInfoDTO(lbInfoDTO.getName(), lbInfoDTO.getClusterId(), 
lbInfoDTO.getRegion()));
+
+                    } catch (PersistenceException e) {
+                        log.error("Unable to remove persisted LB Information", 
e);
+                    }
+                }
+
+            }
+        }
+    }
+
+    /*
+     * 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 if 'terminate.lbs.on.extension.stop' = 
true in aws-extension.sh
+        if (AWSExtensionContext.getInstance().terminateLBsOnExtensionStop()) {
+            for (Map.Entry<String, LoadBalancerInfo> lbInfoEntry : 
clusterIdToLoadBalancerMap
+                    .entrySet()) {
+                // Remove load balancer
+                awsHelper.deleteLoadBalancer(lbInfoEntry.getValue().getName(),
+                        lbInfoEntry.getValue().getRegion());
+
+                // remove the persisted entry
+                try {
+                    persistenceManager.remove(new 
LBInfoDTO(lbInfoEntry.getValue().getName(), lbInfoEntry.getKey(),
+                            lbInfoEntry.getValue().getRegion()));
+
+                } catch (PersistenceException e) {
+                    log.error("Unable to remove persisted LB Information", e);
+                }
+            }
+        } else {
+            if (log.isInfoEnabled()) {
+                log.info("Not terminating LBs since 
terminate.lbs.on.extension.stop=false");
+            }
+        }
+    }
+
+    private static void pause(long duration) {
+        // sleep to stop AWS Rate Exceeding: Caused by: 
com.amazonaws.AmazonServiceException: Rate exceeded
+        // (Service: AmazonElasticLoadBalancing; Status Code: 400; Error Code: 
Throttling; Request ID: xxx-xxx)
+        try {
+            Thread.sleep(duration);
+        } catch (InterruptedException ignored) {
+        }
+    }
+
+    public static ConcurrentHashMap<String, LoadBalancerInfo> 
getClusterIdToLoadBalancerMap() {
+        return clusterIdToLoadBalancerMap;
+    }
 }
 
 /**
@@ -399,19 +400,19 @@ public class AWSLoadBalancer implements LoadBalancer {
  * balancer.
  */
 class LoadBalancerInfo {
-       private String name;
-       private String region;
+    private String name;
+    private String region;
 
-       public LoadBalancerInfo(String name, String region) {
-               this.name = name;
-               this.region = region;
-       }
+    public LoadBalancerInfo(String name, String region) {
+        this.name = name;
+        this.region = region;
+    }
 
-       public String getName() {
-               return name;
-       }
+    public String getName() {
+        return name;
+    }
 
-       public String getRegion() {
-               return region;
-       }
+    public String getRegion() {
+        return region;
+    }
 }

Reply via email to