You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/11/26 14:43:59 UTC
[2/7] stratos git commit: introducing instance to Cluster Monitors
contd.
introducing instance to Cluster Monitors contd.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/bab310ee
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/bab310ee
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/bab310ee
Branch: refs/heads/master
Commit: bab310eee26bd6ebb27a954e0dcf03b72b7c73fe
Parents: 61e6ef0
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Nov 25 21:57:31 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Wed Nov 26 17:55:14 2014 +0530
----------------------------------------------------------------------
.../monitor/cluster/AbstractClusterMonitor.java | 39 +++++++++++++++++---
.../cluster/KubernetesClusterMonitor.java | 9 ++---
.../KubernetesServiceClusterMonitor.java | 7 ++--
.../monitor/cluster/VMClusterMonitor.java | 6 +--
.../monitor/cluster/VMLbClusterMonitor.java | 7 ++--
.../cluster/VMServiceClusterMonitor.java | 7 ++--
.../impl/CloudControllerServiceImpl.java | 4 +-
.../interfaces/CloudControllerService.java | 5 ++-
.../status/ClusterStatusTopicReceiver.java | 2 +-
.../controller/topology/TopologyBuilder.java | 21 ++++++-----
.../ClusterInstanceCreatedMessageProcessor.java | 2 +-
11 files changed, 69 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
index 884ed7e..8b8176f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
@@ -40,6 +40,8 @@ import org.apache.stratos.messaging.event.topology.*;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -56,7 +58,8 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
protected FactHandle scaleCheckFactHandle;
protected boolean hasFaultyMember = false;
protected boolean stop = false;
- protected AbstractClusterContext clusterContext;
+ //protected AbstractClusterContext clusterContext;
+ protected final Map<String, AbstractClusterContext> instanceIdToClusterContextMap;
private String clusterId;
private ClusterStatus status;
private int monitoringIntervalMilliseconds;
@@ -65,14 +68,16 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
private StatefulKnowledgeSession scaleCheckKnowledgeSession;
private boolean isDestroyed;
private AutoscalerRuleEvaluator autoscalerRuleEvaluator;
+ protected String serviceType;
- protected AbstractClusterMonitor(String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator,
- AbstractClusterContext abstractClusterContext) {
+ protected AbstractClusterMonitor(String serviceType, String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator) {
super();
+ this.serviceType = serviceType;
this.clusterId = clusterId;
this.autoscalerRuleEvaluator = autoscalerRuleEvaluator;
- this.clusterContext = abstractClusterContext;
+ //this.clusterContext = abstractClusterContext;
+ this.instanceIdToClusterContextMap = new HashMap<String, AbstractClusterContext>();
this.obsoleteCheckKnowledgeSession = autoscalerRuleEvaluator.getObsoleteCheckStatefulSession();
this.scaleCheckKnowledgeSession = autoscalerRuleEvaluator.getScaleCheckStatefulSession();
this.minCheckKnowledgeSession = autoscalerRuleEvaluator.getMinCheckStatefulSession();
@@ -338,6 +343,30 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
this.hasFaultyMember = hasFaultyMember;
}
+ public void addClusterContextForInstance (String instanceId, AbstractClusterContext clusterContext) {
+
+ if (instanceIdToClusterContextMap.get(instanceId) == null) {
+ synchronized (instanceIdToClusterContextMap) {
+ if (instanceIdToClusterContextMap.get(instanceId) == null) {
+ instanceIdToClusterContextMap.put(instanceId, clusterContext);
+ } else {
+ log.warn("ClusterContext for already exists for cluster instance id: " + instanceId +
+ ", service type: " + serviceType + ", cluster id: " + clusterId);
+ }
+ }
+ } else {
+ log.warn("ClusterContext for already exists for cluster instance id: " + instanceId +
+ ", service type: " + serviceType + ", cluster id: " + clusterId);
+ }
+ }
+
+ public AbstractClusterContext getClusterContext (String instanceId) {
+
+ // if instanceId is null, assume that map contains only one element and return that
+
+ return instanceIdToClusterContextMap.get(instanceId);
+ }
+
public abstract void terminateAllMembers();
public boolean isStop() {
@@ -349,7 +378,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
}
public String getServiceId() {
- return clusterContext.getServiceId();
+ return serviceType;
}
protected int getRoundedInstanceCount(float requiredInstances, float fraction) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
index 7a92fd2..5b753ec 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesClusterMonitor.java
@@ -63,12 +63,11 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor {
private KubernetesClusterContext kubernetesClusterCtxt;
- protected KubernetesClusterMonitor(String clusterId,
- AutoscalerRuleEvaluator autoscalerRuleEvaluator,
- KubernetesClusterContext kubernetesClusterContext) {
+ protected KubernetesClusterMonitor(String serviceType, String clusterId,
+ AutoscalerRuleEvaluator autoscalerRuleEvaluator) {
- super(clusterId, autoscalerRuleEvaluator, kubernetesClusterContext);
- this.kubernetesClusterCtxt = kubernetesClusterContext;
+ super(serviceType, clusterId, autoscalerRuleEvaluator);
+ //this.kubernetesClusterCtxt = kubernetesClusterContext;
}
@Override
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
index cf8736d..701e5a0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
@@ -45,13 +45,12 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
private String lbReferenceType;
- public KubernetesServiceClusterMonitor(String clusterId, KubernetesClusterContext kubernetesClusterCtxt) {
- super(clusterId,
+ public KubernetesServiceClusterMonitor(String serviceType, String clusterId) {
+ super(serviceType, clusterId,
new AutoscalerRuleEvaluator(
StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE,
StratosConstants.CONTAINER_OBSOLETE_CHECK_DROOL_FILE,
- StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE),
- kubernetesClusterCtxt);
+ StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE));
readConfigurations();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index b9ca929..5ca853e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -53,9 +53,9 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor {
private static final Log log = LogFactory.getLog(VMClusterMonitor.class);
- protected VMClusterMonitor(String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator,
- VMClusterContext vmClusterContext) {
- super(clusterId, autoscalerRuleEvaluator, vmClusterContext);
+ protected VMClusterMonitor(String serviceType, String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator) {
+ super(serviceType, clusterId, autoscalerRuleEvaluator);
+
}
@Override
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
index 91475fe..af770a0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
@@ -49,10 +49,9 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
private static final Log log = LogFactory.getLog(VMLbClusterMonitor.class);
- public VMLbClusterMonitor(String clusterId, String serviceId, VMClusterContext vmClusterContext) {
- super(clusterId, new AutoscalerRuleEvaluator( StratosConstants.VM_MIN_CHECK_DROOL_FILE,
- StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
- vmClusterContext);
+ public VMLbClusterMonitor(String serviceType, String clusterId) {
+ super(serviceType, clusterId, new AutoscalerRuleEvaluator( StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+ StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, StratosConstants.VM_SCALE_CHECK_DROOL_FILE));
readConfigurations();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
index a072952..12875cc 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
@@ -55,12 +55,11 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
private boolean hasPrimary;
private float scalingFactorBasedOnDependencies = 1.0f;
- public VMServiceClusterMonitor(String clusterId, VMServiceClusterContext vmServiceClusterContext) {
- super(clusterId, new AutoscalerRuleEvaluator(
+ public VMServiceClusterMonitor(String serviceType, String clusterId, VMServiceClusterContext vmServiceClusterContext) {
+ super(serviceType, clusterId, new AutoscalerRuleEvaluator(
StratosConstants.VM_MIN_CHECK_DROOL_FILE,
StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE,
- StratosConstants.VM_SCALE_CHECK_DROOL_FILE), vmServiceClusterContext
- );
+ StratosConstants.VM_SCALE_CHECK_DROOL_FILE));
readConfigurations();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 4655dfe..7f11463 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -2086,10 +2086,10 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
- public void createClusterInstance (String alias, String clusterId, String instanceId) throws
+ public void createClusterInstance (String serviceType, String clusterId, String alias, String instanceId) throws
ClusterInstanceCreationException {
-
+ TopologyBuilder.handleClusterInstanceCreated(serviceType, clusterId, alias, instanceId);
}
// public void deployApplicationDefinition (ApplicationContext applicationContext) throws ApplicationDefinitionException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
index 687f7bf..4526676 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
@@ -210,11 +210,12 @@ public interface CloudControllerService {
/**
* Creates a cluster instance with the given information
*
- * @param alias alias provided in the subscription parameters
+ * @param serviceType serviceType
* @param clusterId cluster id
+ * @param alias alias provided in the subscription parameters
* @param instanceId instance id
* @throws ClusterInstanceCreationException if an y error occurs in cluster instance creation
*/
- public void createClusterInstance (String alias, String clusterId, String instanceId) throws
+ public void createClusterInstance (String serviceType, String clusterId, String alias, String instanceId) throws
ClusterInstanceCreationException;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/receiver/cluster/status/ClusterStatusTopicReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/receiver/cluster/status/ClusterStatusTopicReceiver.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/receiver/cluster/status/ClusterStatusTopicReceiver.java
index 74b2d80..f89434b 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/receiver/cluster/status/ClusterStatusTopicReceiver.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/receiver/cluster/status/ClusterStatusTopicReceiver.java
@@ -68,7 +68,7 @@ public class ClusterStatusTopicReceiver implements Runnable{
statusEventReceiver.addEventListener(new ClusterStatusClusterInstanceCreatedEventListener() {
@Override
protected void onEvent(Event event) {
- TopologyBuilder.handleClusterInstanceCreated((ClusterStatusClusterInstanceCreatedEvent) event);
+ //TopologyBuilder.handleClusterInstanceCreated((ClusterStatusClusterInstanceCreatedEvent) event);
}
});
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index 5d2c0f4..af98c1e 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@ -281,35 +281,38 @@ public class TopologyBuilder {
}
- public static void handleClusterInstanceCreated(ClusterStatusClusterInstanceCreatedEvent event) {
+ public static void handleClusterInstanceCreated(String serviceType, String clusterId, String alias, String instanceId) {
TopologyManager.acquireWriteLock();
try {
Topology topology = TopologyManager.getTopology();
- Service service = topology.getService(event.getServiceName());
+ Service service = topology.getService(serviceType);
if (service == null) {
- log.error("Service " + event.getServiceName() +
+ log.error("Service " + serviceType +
" not found in Topology, unable to update the cluster status to Created");
return;
}
- Cluster cluster = service.getCluster(event.getClusterId());
+ Cluster cluster = service.getCluster(clusterId);
if (cluster == null) {
- log.error("Cluster " + event.getClusterId() + " not found in Topology, unable to update " +
+ log.error("Cluster " + clusterId + " not found in Topology, unable to update " +
"status to Created");
return;
}
- if(cluster.getInstanceContexts(event.getInstanceId()) == null) {
+ if(cluster.getInstanceContexts(instanceId) != null) {
log.warn("The Instance context for the cluster already exists for [cluster] " +
- event.getClusterId() + " [instance-id] " + event.getInstanceId());
+ clusterId + " [instance-id] " + instanceId);
return;
}
+ //context.setStatus(ClusterStatus.Created);
+ cluster.addInstanceContext(instanceId, new ClusterInstanceContext(alias, clusterId, instanceId));
+ TopologyManager.updateTopology(topology);
+
ClusterInstanceCreatedEvent clusterInstanceCreatedEvent =
- new ClusterInstanceCreatedEvent(event.getAlias(), event.getServiceName(),
- event.getClusterId(), event.getInstanceId());
+ new ClusterInstanceCreatedEvent(alias, serviceType, clusterId, instanceId);
TopologyEventPublisher.sendClusterInstanceCreatedEvent(clusterInstanceCreatedEvent);
} finally {
http://git-wip-us.apache.org/repos/asf/stratos/blob/bab310ee/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
index bf2175d..a721f5e 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterInstanceCreatedMessageProcessor.java
@@ -120,7 +120,7 @@ public class ClusterInstanceCreatedMessageProcessor extends MessageProcessor {
ClusterInstanceContext context = new ClusterInstanceContext(event.getAlias(),
event.getClusterId(),
event.getInstanceId());
- context.setStatus(ClusterStatus.Created);
+ //context.setStatus(ClusterStatus.Created);
cluster.addInstanceContext(event.getInstanceId(), context);
}
// Notify event listeners