Improved logging.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/823d65a9 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/823d65a9 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/823d65a9 Branch: refs/heads/gsoc-projects-2015 Commit: 823d65a931bdf2edd39915a08e94c9899487a0e0 Parents: df8684b Author: swapnilpatilRajaram <[email protected]> Authored: Tue Aug 18 15:46:48 2015 +0000 Committer: swapnilpatilRajaram <[email protected]> Committed: Tue Aug 18 15:46:48 2015 +0000 ---------------------------------------------------------------------- .../apache/stratos/aws/extension/AWSHelper.java | 9 +- .../stratos/aws/extension/AWSLoadBalancer.java | 277 ++++++++++--------- 2 files changed, 149 insertions(+), 137 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/823d65a9/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 768a850..f4efc98 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 @@ -261,7 +261,6 @@ public class AWSHelper { throw new LoadBalancerExtensionException( "Could not create load balancer " + name, e); } - } /** @@ -304,7 +303,7 @@ public class AWSHelper { public void registerInstancesToLoadBalancer(String loadBalancerName, List<Instance> instances, String region) { - log.info("Attaching following instance(s) to load balancer + " + log.info("Registering following instance(s) to load balancer " + loadBalancerName); for (Instance instance : instances) { @@ -341,7 +340,7 @@ public class AWSHelper { public void deregisterInstancesFromLoadBalancer(String loadBalancerName, List<Instance> instances, String region) { - log.info("De-registering following instance(s) from load balancer + " + log.info("De-registering following instance(s) from load balancer " + loadBalancerName); for (Instance instance : instances) { @@ -541,7 +540,7 @@ public class AWSHelper { return createSecurityGroupResult.getGroupId(); } catch (AmazonClientException e) { - log.debug("Could not create security group.", e); + log.error("Could not create security group.", e); throw new LoadBalancerExtensionException( "Could not create security group.", e); } @@ -596,7 +595,7 @@ public class AWSHelper { secirutyGroup = securityGroups.get(0); } } catch (AmazonClientException e) { - log.debug("Could not describe security groups.", e); + log.error("Could not describe security groups.", e); } if (secirutyGroup != null) { http://git-wip-us.apache.org/repos/asf/stratos/blob/823d65a9/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 59b313e..573ce64 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 @@ -38,7 +38,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 + // 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 @@ -57,176 +58,188 @@ public class AWSLoadBalancer implements LoadBalancer { public boolean configure(Topology topology) throws LoadBalancerExtensionException { - log.info("AWS load balancer extension re-configured."); + log.info("AWS load balancer extension is being reconfigured."); - try { - 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. - LoadBalancerInfo loadBalancerInfo = clusterIdToLoadBalancerMap - .get(cluster.getClusterId()); + if (log.isDebugEnabled()) { + log.debug("Load balancer for cluster " + + cluster.getClusterId() + + " is already present."); + } - String loadBalancerName = loadBalancerInfo.getName(); - String region = loadBalancerInfo.getRegion(); + LoadBalancerInfo loadBalancerInfo = clusterIdToLoadBalancerMap + .get(cluster.getClusterId()); - // Get all the instances attached - // Attach newly added instances to load balancer + String loadBalancerName = loadBalancerInfo.getName(); + String region = loadBalancerInfo.getRegion(); - // attachedInstances list is useful in finding out what - // all new instances which - // should be attached to this load balancer. - List<Instance> attachedInstances = awsHelper - .getAttachedInstances(loadBalancerName, region); + // Get all the instances attached + // Attach newly added instances to load balancer - // clusterMembers stores all the members of a cluster. - Collection<Member> clusterMembers = cluster - .getMembers(); + // attachedInstances list is useful in finding out what + // all new instances which + // should be attached to this load balancer. + List<Instance> attachedInstances = awsHelper + .getAttachedInstances(loadBalancerName, region); - if (clusterMembers.size() > 0) { - activeClusters.add(cluster.getClusterId()); + // clusterMembers stores all the members of a cluster. + Collection<Member> clusterMembers = cluster.getMembers(); - List<Instance> instancesToAddToLoadBalancer = new ArrayList<Instance>(); + if (clusterMembers.size() > 0) { + activeClusters.add(cluster.getClusterId()); - for (Member member : clusterMembers) { - // if instance id of member is not in - // attachedInstances - // add this to instancesToAddToLoadBalancer + List<Instance> instancesToAddToLoadBalancer = new ArrayList<Instance>(); - log.debug("Instance id : " - + 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())); - 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()) + + " needs to be registered to load balancer " + + loadBalancerName); } - } - if (instancesToAddToLoadBalancer.size() > 0) - awsHelper.registerInstancesToLoadBalancer( - loadBalancerName, - instancesToAddToLoadBalancer, region); + } } - } else { - // Create a new load balancer for this cluster - Collection<Member> clusterMembers = cluster - .getMembers(); - - 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); - - // 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); - } + if (instancesToAddToLoadBalancer.size() > 0) + awsHelper.registerInstancesToLoadBalancer( + loadBalancerName, + instancesToAddToLoadBalancer, region); + } + + } else { + // Create a new load balancer for this cluster + Collection<Member> clusterMembers = cluster.getMembers(); + + 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); + + // 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); } + } - 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>(); + // Register instances in the cluster to load balancer + List<Instance> instances = new ArrayList<Instance>(); - for (Member member : clusterMembers) { - String instanceId = member.getInstanceId(); + for (Member member : clusterMembers) { + String instanceId = member.getInstanceId(); - log.debug("Instance id : " + if (log.isDebugEnabled()) { + log.debug("Instance " + awsHelper - .getAWSInstanceName(instanceId)); + .getAWSInstanceName(instanceId) + + " needs to be registered to load balancer " + + loadBalancerName); + } - Instance instance = new Instance(); - instance.setInstanceId(awsHelper - .getAWSInstanceName(instanceId)); + Instance instance = new Instance(); + instance.setInstanceId(awsHelper + .getAWSInstanceName(instanceId)); - instances.add(instance); - } + instances.add(instance); + } - awsHelper.registerInstancesToLoadBalancer( - loadBalancerName, instances, region); + awsHelper.registerInstancesToLoadBalancer( + loadBalancerName, instances, region); - LoadBalancerInfo loadBalancerInfo = new LoadBalancerInfo( - loadBalancerName, region); + LoadBalancerInfo loadBalancerInfo = new LoadBalancerInfo( + loadBalancerName, region); - clusterIdToLoadBalancerMap.put( - cluster.getClusterId(), loadBalancerInfo); - activeClusters.add(cluster.getClusterId()); - } + clusterIdToLoadBalancerMap.put(cluster.getClusterId(), + loadBalancerInfo); + activeClusters.add(cluster.getClusterId()); } } } + } + + // Find out clusters which were present earlier but are not now. + List<String> clustersToRemoveFromMap = new ArrayList<String>(); - // Find out clusters which were present earlier but are not now. - List<String> clustersToRemoveFromMap = new ArrayList<String>(); + for (String clusterId : clusterIdToLoadBalancerMap.keySet()) { + if (!activeClusters.contains(clusterId)) { + clustersToRemoveFromMap.add(clusterId); - 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. - awsHelper.deleteLoadBalancer(clusterIdToLoadBalancerMap - .get(clusterId).getName(), - clusterIdToLoadBalancerMap.get(clusterId) - .getRegion()); - clusterIdToLoadBalancerMap.remove(clusterId); } + } - activeClusters.clear(); - } catch (LoadBalancerExtensionException e) { - throw new LoadBalancerExtensionException(e); + // Delete load balancers associated with these clusters. + for (String clusterId : clustersToRemoveFromMap) { + // Remove load balancer for this cluster. + awsHelper.deleteLoadBalancer( + clusterIdToLoadBalancerMap.get(clusterId).getName(), + clusterIdToLoadBalancerMap.get(clusterId).getRegion()); + clusterIdToLoadBalancerMap.remove(clusterId); } + activeClusters.clear(); + log.info("AWS load balancer extension was reconfigured as per the topology."); return true; }
