Updated Branches: refs/heads/master 7732f1350 -> 7d0d1e9e5
setting lb cluster id correctly in health event delegator and refactoring Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/7d0d1e9e Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/7d0d1e9e Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/7d0d1e9e Branch: refs/heads/master Commit: 7d0d1e9e58f253a879bd968cd43bb778563c82d3 Parents: 7732f13 Author: Nirmal Fernando <[email protected]> Authored: Wed Dec 11 23:53:55 2013 +0530 Committer: Nirmal Fernando <[email protected]> Committed: Wed Dec 11 23:53:55 2013 +0530 ---------------------------------------------------------------------- .../cloud/controller/CloudControllerClient.java | 1 + .../health/HealthEventMessageDelegator.java | 14 ++++++++-- .../rule/AutoscalerRuleEvaluator.java | 29 ++++++++++++-------- 3 files changed, 31 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7d0d1e9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java index b131abc..a657339 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java @@ -126,6 +126,7 @@ public class CloudControllerClient { member.setPartition(partition); member.setClusterId(lbClusterId); member.setInitTime(System.currentTimeMillis()); + log.info("Trying to spawn an instance of [cluster] "+clusterId+" [partition] "+partition.getId()+ " [lb cluster] "+lbClusterId); return stub.startInstance(member); } catch (CloudControllerServiceIllegalArgumentExceptionException e) { log.error(e.getMessage()); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7d0d1e9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java index 76dac5d..05aa631 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/HealthEventMessageDelegator.java @@ -19,17 +19,21 @@ package org.apache.stratos.autoscaler.message.receiver.health; import com.google.gson.stream.JsonReader; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.ClusterMonitor; import org.apache.stratos.autoscaler.Constants; +import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.PartitionContext; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.exception.SpawningException; import org.apache.stratos.autoscaler.exception.TerminationException; import org.apache.stratos.autoscaler.partition.PartitionManager; import org.apache.stratos.autoscaler.policy.model.LoadAverage; import org.apache.stratos.autoscaler.policy.model.MemoryConsumption; +import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; import org.apache.stratos.cloud.controller.deployment.partition.Partition; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.messaging.domain.topology.Member; @@ -37,6 +41,7 @@ import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; import javax.jms.TextMessage; + import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; @@ -282,9 +287,14 @@ public class HealthEventMessageDelegator implements Runnable { // start a new member in the same Partition String partitionId = monitor.getPartitonOfMember(memberId); Partition partition = monitor.getDeploymentPolicy().getPartitionById(partitionId); - ccClient.spawnAnInstance(partition, clusterId, null); + NetworkPartitionContext nwPartitionCtxt = PartitionManager.getInstance().getNetworkPartitionOfPartition(partitionId); + PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId); + + String lbClusterId = AutoscalerRuleEvaluator.getLbClusterId(partitionCtxt, nwPartitionCtxt); + ccClient.spawnAnInstance(partition, clusterId, lbClusterId); if (log.isInfoEnabled()) { - log.info(String.format("Instance spawned for fault member: [partition] %s [cluster] %s", partitionId, clusterId)); + log.info(String.format("Instance spawned for fault member: [partition] %s [cluster] %s [lb cluster] %s ", + partitionId, clusterId, lbClusterId)); } } catch (TerminationException e) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7d0d1e9e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java index 3ec7adb..4589efa 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java @@ -132,17 +132,7 @@ public class AutoscalerRuleEvaluator { PartitionManager.getInstance() .getNetworkPartition(nwPartitionId); - Properties props = partitionContext.getProperties(); - String value = - (String) props.get(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF); - String lbClusterId = null; - - if (value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) { - lbClusterId = ctxt.getDefaultLbClusterId(); - } else if (value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) { - String serviceName = partitionContext.getServiceName(); - lbClusterId = ctxt.getLBClusterIdOfService(serviceName); - } + String lbClusterId = getLbClusterId(partitionContext, ctxt); MemberContext memberContext = CloudControllerClient.getInstance() @@ -160,6 +150,23 @@ public class AutoscalerRuleEvaluator { } } + + + public static String getLbClusterId(PartitionContext partitionContext, NetworkPartitionContext ctxt) { + Properties props = partitionContext.getProperties(); + String value = + (String) props.get(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF); + String lbClusterId = null; + + if (value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) { + lbClusterId = ctxt.getDefaultLbClusterId(); + } else if (value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) { + String serviceName = partitionContext.getServiceName(); + lbClusterId = ctxt.getLBClusterIdOfService(serviceName); + } + return lbClusterId; + } + public void delegateTerminate(Partition partition, String clusterId) { log.info("terminate from partition " + partition.getId() + " cluster " + clusterId ); }
