You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/10/09 16:35:43 UTC
[30/32] stratos git commit: Improved logging.
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 <sw...@students.iiit.ac.in>
Authored: Tue Aug 18 15:46:48 2015 +0000
Committer: swapnilpatilRajaram <sw...@students.iiit.ac.in>
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;
}