You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/11/30 11:20:14 UTC
[2/5] stratos git commit: refactoring cluster monitor to include
proper data structure with the cluster instances
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/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 25836b7..83d5374 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
@@ -21,14 +21,14 @@ package org.apache.stratos.autoscaler.monitor.cluster;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.context.cluster.AbstractClusterContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
-import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
+import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
-import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
import org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
+import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.autoscaler.util.ConfUtil;
@@ -40,9 +40,8 @@ import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
import org.apache.stratos.messaging.domain.applications.GroupStatus;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
/**
* Is responsible for monitoring a service cluster which is based on VMs. This runs periodically
@@ -58,9 +57,9 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
public VMServiceClusterMonitor(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));
+ StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+ StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE,
+ StratosConstants.VM_SCALE_CHECK_DROOL_FILE));
readConfigurations();
}
@@ -71,10 +70,10 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
/* TODO ***********if (((getStatus().getCode() <= ClusterStatus.Active.getCode()) ||
(getStatus() == ClusterStatus.Inactive && !hasStartupDependents)) && !this.hasFaultyMember
&& !stop) {*/
- if (log.isDebugEnabled()) {
- log.debug("Cluster monitor is running.. " + this.toString());
- }
- monitor();
+ if (log.isDebugEnabled()) {
+ log.debug("Cluster monitor is running.. " + this.toString());
+ }
+ monitor();
/*} else {
if (log.isDebugEnabled()) {
log.debug("Cluster monitor is suspended as the cluster is in " +
@@ -113,98 +112,107 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
}
public void monitor() {
-
- Set<Map.Entry<String, AbstractClusterContext>> instanceIdToClusterCtxtEntries = instanceIdToClusterContextMap.entrySet();
- for (final Map.Entry<String, AbstractClusterContext> instanceIdToClusterCtxtEntry : instanceIdToClusterCtxtEntries) {
- Runnable monitoringRunnable = new Runnable() {
- @Override
- public void run() {
- for (ClusterLevelNetworkPartitionContext networkPartitionContext :
- getNetworkPartitionCtxts(instanceIdToClusterCtxtEntry.getKey()).values()) {
- // store primary members in the network partition context
- List<String> primaryMemberListInNetworkPartition = new ArrayList<String>();
- //minimum check per partition
- for (ClusterLevelPartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) {
- // store primary members in the partition context
- List<String> primaryMemberListInPartition = new ArrayList<String>();
- // get active primary members in this partition context
- for (MemberContext memberContext : partitionContext.getActiveMembers()) {
- if (isPrimaryMember(memberContext)) {
- primaryMemberListInPartition.add(memberContext.getMemberId());
+ final Collection<ClusterLevelNetworkPartitionContext> clusterLevelNetworkPartitionContexts =
+ ((VMClusterContext) this.clusterContext).getNetworkPartitionCtxts().values();
+ Runnable monitoringRunnable = new Runnable() {
+ @Override
+ public void run() {
+ for (ClusterLevelNetworkPartitionContext networkPartitionContext :
+ clusterLevelNetworkPartitionContexts) {
+ // store primary members in the network partition context
+ List<String> primaryMemberListInNetworkPartition = new ArrayList<String>();
+ //minimum check per partition
+ for (ClusterInstanceContext instanceContext : networkPartitionContext.
+ getClusterInstanceContextMap().values()) {
+ //FIXME to check the status of the instance
+ if (true) {
+ for (ClusterLevelPartitionContext partitionContext :
+ instanceContext.getPartitionCtxts().values()) {
+ // store primary members in the partition context
+ List<String> primaryMemberListInPartition = new ArrayList<String>();
+ // get active primary members in this partition context
+ for (MemberContext memberContext : partitionContext.getActiveMembers()) {
+ if (isPrimaryMember(memberContext)) {
+ primaryMemberListInPartition.add(memberContext.getMemberId());
+ }
}
- }
- // get pending primary members in this partition context
- for (MemberContext memberContext : partitionContext.getPendingMembers()) {
- if (isPrimaryMember(memberContext)) {
- primaryMemberListInPartition.add(memberContext.getMemberId());
+ // get pending primary members in this partition context
+ for (MemberContext memberContext : partitionContext.getPendingMembers()) {
+ if (isPrimaryMember(memberContext)) {
+ primaryMemberListInPartition.add(memberContext.getMemberId());
+ }
+ }
+ primaryMemberListInNetworkPartition.addAll(primaryMemberListInPartition);
+ getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ getMinCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
+ getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
+ getMinCheckKnowledgeSession().setGlobal("instanceId",
+ instanceContext.getId());
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running minimum check for partition %s ",
+ partitionContext.getPartitionId()));
}
- }
- primaryMemberListInNetworkPartition.addAll(primaryMemberListInPartition);
- getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
- getMinCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
- getMinCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
- getMinCheckKnowledgeSession().setGlobal("instanceId", instanceIdToClusterCtxtEntry.getKey());
-
- if (log.isDebugEnabled()) {
- log.debug(String.format("Running minimum check for partition %s ", partitionContext.getPartitionId()));
- }
-
- minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession()
- , minCheckFactHandle, partitionContext);
-
- obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
- obsoleteCheckFactHandle, partitionContext);
-
- //checking the status of the cluster
-
-
- }
- boolean rifReset = networkPartitionContext.isRifReset();
- boolean memoryConsumptionReset = networkPartitionContext.isMemoryConsumptionReset();
- boolean loadAverageReset = networkPartitionContext.isLoadAverageReset();
- if (log.isDebugEnabled()) {
- log.debug("flag of rifReset: " + rifReset + " flag of memoryConsumptionReset" + memoryConsumptionReset
- + " flag of loadAverageReset" + loadAverageReset);
- }
- if (rifReset || memoryConsumptionReset || loadAverageReset) {
+ minCheckFactHandle = AutoscalerRuleEvaluator.
+ evaluateMinCheck(getMinCheckKnowledgeSession()
+ , minCheckFactHandle, partitionContext);
+ obsoleteCheckFactHandle = AutoscalerRuleEvaluator.
+ evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
+ obsoleteCheckFactHandle, partitionContext);
- VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterCtxtEntry.getValue();
+ //checking the status of the cluster
- getScaleCheckKnowledgeSession().setGlobal("instanceId", instanceIdToClusterCtxtEntry.getKey());
- getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
- getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", vmClusterContext.getAutoscalePolicy());
- getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
- getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
- getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
- getScaleCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
- getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
- getScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInNetworkPartition);
+ boolean rifReset = instanceContext.isRifReset();
+ boolean memoryConsumptionReset = instanceContext.isMemoryConsumptionReset();
+ boolean loadAverageReset = instanceContext.isLoadAverageReset();
- if (log.isDebugEnabled()) {
- log.debug(String.format("Running scale check for network partition %s ", networkPartitionContext.getId()));
- log.debug(" Primary members : " + primaryMemberListInNetworkPartition);
+ if (log.isDebugEnabled()) {
+ log.debug("flag of rifReset: " + rifReset + " flag of memoryConsumptionReset" + memoryConsumptionReset
+ + " flag of loadAverageReset" + loadAverageReset);
+ }
+ if (rifReset || memoryConsumptionReset || loadAverageReset) {
+
+
+ VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
+
+ getScaleCheckKnowledgeSession().setGlobal("instanceId",
+ instanceContext.getId());
+ getScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", vmClusterContext.getAutoscalePolicy());
+ getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
+ getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
+ getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
+ getScaleCheckKnowledgeSession().setGlobal("lbRef", lbReferenceType);
+ getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
+ getScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInNetworkPartition);
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running scale check for network partition %s ", networkPartitionContext.getId()));
+ log.debug(" Primary members : " + primaryMemberListInNetworkPartition);
+ }
+
+ scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(getScaleCheckKnowledgeSession()
+ , scaleCheckFactHandle, networkPartitionContext);
+
+ instanceContext.setRifReset(false);
+ instanceContext.setMemoryConsumptionReset(false);
+ instanceContext.setLoadAverageReset(false);
+ } else if (log.isDebugEnabled()) {
+ log.debug(String.format("Scale rule will not run since the LB statistics have not received before this " +
+ "cycle for network partition %s", networkPartitionContext.getId()));
+ }
}
- scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(getScaleCheckKnowledgeSession()
- , scaleCheckFactHandle, networkPartitionContext);
-
- networkPartitionContext.setRifReset(false);
- networkPartitionContext.setMemoryConsumptionReset(false);
- networkPartitionContext.setLoadAverageReset(false);
- } else if (log.isDebugEnabled()) {
- log.debug(String.format("Scale rule will not run since the LB statistics have not received before this " +
- "cycle for network partition %s", networkPartitionContext.getId()));
}
-
}
}
- };
- monitoringRunnable.run();
- }
+ }
+ };
+ monitoringRunnable.run();
}
@Override
@@ -279,16 +287,18 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
@Override
public void onParentScalingEvent(MonitorScalingEvent scalingEvent) {
- if(log.isDebugEnabled()){
+ if (log.isDebugEnabled()) {
log.debug("Parent scaling event received to [cluster]: " + this.getClusterId()
- + ", [network partition]: " + scalingEvent.getNetworkPartitionId()
+ + ", [network partition]: " + scalingEvent.getNetworkPartitionId()
+ ", [event] " + scalingEvent.getId() + ", [group instance] " + scalingEvent.getInstanceId());
}
this.scalingFactorBasedOnDependencies = scalingEvent.getFactor();
- VMClusterContext vmClusterContext = (VMClusterContext) instanceIdToClusterContextMap.get(scalingEvent.getInstanceId());
+ VMClusterContext vmClusterContext = (VMClusterContext) clusterContext;
+ String instanceId = scalingEvent.getInstanceId();
- ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = getNetworkPartitionCtxt(null, scalingEvent.getNetworkPartitionId());
+ ClusterInstanceContext clusterLevelNetworkPartitionContext =
+ getClusterInstanceContext(scalingEvent.getNetworkPartitionId(), instanceId);
//TODO get min instance count from instance context
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index 58a02a6..b332b15 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -200,53 +200,66 @@ public class ApplicationMonitor extends ParentComponentMonitor {
List<String> instanceIds = new ArrayList<String>();
DeploymentPolicy deploymentPolicy = getDeploymentPolicy(application);
String instanceId;
- for (ApplicationLevelNetworkPartition networkPartition : deploymentPolicy.getApplicationLevelNetworkPartitions()) {
- if (networkPartition.isActiveByDefault()) {
- ApplicationLevelNetworkPartitionContext context =
- new ApplicationLevelNetworkPartitionContext(networkPartition.getId());
- instanceId = createApplicationInstance(application, networkPartition.getId());
- context.addInstanceContext(application.getInstanceContexts(instanceId));
-
- this.networkPartitionCtxts.put(context.getId(), context);
-
- instanceIds.add(instanceId);
- log.info("Application instance has been added for the [network partition] " +
- networkPartition.getId() + " [appInstanceId] " + instanceId);
- }
- }
- startDependency(application, instanceIds);
+ if(deploymentPolicy == null) {
+ //FIXME for docker with deployment policy
+ instanceId = createApplicationInstance(application, null);
+ instanceIds.add(instanceId);
+ } else {
+ for (ApplicationLevelNetworkPartition networkPartition :
+ deploymentPolicy.getApplicationLevelNetworkPartitions()) {
+ if (networkPartition.isActiveByDefault()) {
+ ApplicationLevelNetworkPartitionContext context =
+ new ApplicationLevelNetworkPartitionContext(networkPartition.getId());
+ instanceId = createApplicationInstance(application, networkPartition.getId());
+ context.addInstanceContext(application.getInstanceContexts(instanceId));
+
+ this.networkPartitionCtxts.put(context.getId(), context);
+ instanceIds.add(instanceId);
+ log.info("Application instance has been added for the [network partition] " +
+ networkPartition.getId() + " [appInstanceId] " + instanceId);
+ }
+ }
+ }
+ startDependency(application, instanceIds);
}
public void createInstanceOnBurstingForApplication() throws TopologyInConsistentException,
PolicyValidationException,
ParentMonitorNotFoundException {
- //TODO get lock
Application application = ApplicationHolder.getApplications().getApplication(appId);
if (application == null) {
String msg = "Application cannot be found in the Topology.";
throw new TopologyInConsistentException(msg);
}
+ boolean burstNPFound = false;
DeploymentPolicy deploymentPolicy = getDeploymentPolicy(application);
String instanceId = null;
//Find out the inActive network partition
- boolean burstNPFound = false;
- for (ApplicationLevelNetworkPartition networkPartition : deploymentPolicy.getApplicationLevelNetworkPartitions()) {
- if (!networkPartition.isActiveByDefault()) {
- if (!this.networkPartitionCtxts.containsKey(networkPartition.getId())) {
- ApplicationLevelNetworkPartitionContext context =
- new ApplicationLevelNetworkPartitionContext(networkPartition.getId());
- context.setCreatedOnBurst(true);
- instanceId = createApplicationInstance(application, networkPartition.getId());
- context.addInstanceContext(application.getInstanceContexts(instanceId));
- this.networkPartitionCtxts.put(context.getId(), context);
- burstNPFound = true;
+ if(deploymentPolicy == null) {
+ //FIXME for docker with deployment policy
+ instanceId = createApplicationInstance(application, null);
+
+ } else {
+ for (ApplicationLevelNetworkPartition networkPartition : deploymentPolicy.
+ getApplicationLevelNetworkPartitions()) {
+ if (!networkPartition.isActiveByDefault()) {
+ if (!this.networkPartitionCtxts.containsKey(networkPartition.getId())) {
+ ApplicationLevelNetworkPartitionContext context =
+ new ApplicationLevelNetworkPartitionContext(networkPartition.getId());
+ context.setCreatedOnBurst(true);
+ instanceId = createApplicationInstance(application, networkPartition.getId());
+ context.addInstanceContext(application.getInstanceContexts(instanceId));
+ this.networkPartitionCtxts.put(context.getId(), context);
+ burstNPFound = true;
+ }
}
}
}
+
if (!burstNPFound) {
log.warn("[Application] " + appId + " cannot be burst as no available resources found");
} else {
@@ -257,22 +270,21 @@ public class ApplicationMonitor extends ParentComponentMonitor {
private DeploymentPolicy getDeploymentPolicy(Application application) throws PolicyValidationException {
String deploymentPolicyName = application.getDeploymentPolicy();
- if (deploymentPolicyName == null) {
+ /*if (deploymentPolicyName == null) {
String msg = "Deployment Policy is not specified to the [Application]:" + appId;
log.error(msg);
throw new PolicyValidationException(msg);
}
-
- DeploymentPolicy deploymentPolicy =
- PolicyManager.getInstance()
- .getDeploymentPolicy(deploymentPolicyName);
- if (deploymentPolicy == null) {
+*/ DeploymentPolicy deploymentPolicy = null;
+ if(deploymentPolicyName != null) {
+ deploymentPolicy = PolicyManager.getInstance()
+ .getDeploymentPolicy(deploymentPolicyName);
if (deploymentPolicy == null) {
String msg = "Deployment policy is null: [policy-name] " + deploymentPolicyName;
log.error(msg);
throw new PolicyValidationException(msg);
}
- }
+ }
return deploymentPolicy;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
index ee6c877..3e7d6e6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ApplicationLevelNetworkPartition.java
@@ -85,4 +85,13 @@ public class ApplicationLevelNetworkPartition implements Serializable{
public void setActiveByDefault(boolean activeByDefault) {
this.activeByDefault = activeByDefault;
}
+
+ public Partition getPartition(String partitionId) {
+ for(Partition partition : partitions) {
+ if(partition.getId().equals(partitionId)) {
+ return partition;
+ }
+ }
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
index a8d6707..83af824 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelNetworkPartition.java
@@ -92,4 +92,5 @@ public class ChildLevelNetworkPartition implements Serializable {
public void setChildLevelPartitions(ChildLevelPartition[] childLevelPartitions) {
this.childLevelPartitions = childLevelPartitions;
}
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 50c59b8..330036a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -28,7 +28,9 @@ import org.apache.stratos.autoscaler.algorithm.OneAfterAnother;
import org.apache.stratos.autoscaler.algorithm.RoundRobin;
import org.apache.stratos.autoscaler.client.CloudControllerClient;
import org.apache.stratos.autoscaler.client.InstanceNotificationClient;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
import org.apache.stratos.autoscaler.context.cluster.KubernetesClusterContext;
+import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
@@ -185,11 +187,10 @@ public class RuleTasksDelegator {
//Calculate accumulation of minimum counts of all the partition of current network partition
int minimumCountOfNetworkPartition = 0;
VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) AutoscalerContext.getInstance().getClusterMonitor(clusterId);
- for (ClusterLevelPartitionContext partitionContextOfCurrentNetworkClusterMonitorPartition : vmClusterMonitor.getNetworkPartitionCtxt(instanceId, nwPartitionId).
- getPartitionCtxts().values()) {
-
- minimumCountOfNetworkPartition += partitionContextOfCurrentNetworkClusterMonitorPartition.getMinimumMemberCount();
- }
+ VMClusterContext clusterContext = (VMClusterContext) vmClusterMonitor.getClusterContext();
+ ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = clusterContext.getNetworkPartitionCtxt(nwPartitionId);
+ ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+ minimumCountOfNetworkPartition = clusterInstanceContext.getMinInstanceCount();
MemberContext memberContext =
CloudControllerClient.getInstance()
.spawnAnInstance(clusterMonitorPartitionContext.getPartition(),
@@ -477,11 +478,11 @@ public class RuleTasksDelegator {
return (int) Math.ceil(predictedValue);
}
- public double getLoadAveragePredictedValue(ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) {
+ public double getLoadAveragePredictedValue(String instanceId, ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) {
double loadAveragePredicted = 0.0d;
int totalMemberCount = 0;
-
- for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+ ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+ for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts().values()) {
for (MemberStatsContext memberStatsContext : partitionContext.getMemberStatsContexts().values()) {
float memberAverageLoadAverage = memberStatsContext.getLoadAverage().getAverage();
@@ -505,11 +506,11 @@ public class RuleTasksDelegator {
}
}
- public double getMemoryConsumptionPredictedValue(ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) {
+ public double getMemoryConsumptionPredictedValue(String instanceId, ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext) {
double memoryConsumptionPredicted = 0.0d;
int totalMemberCount = 0;
-
- for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+ ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+ for (ClusterLevelPartitionContext partitionContext : clusterInstanceContext.getPartitionCtxts().values()) {
for (MemberStatsContext memberStatsContext : partitionContext.getMemberStatsContexts().values()) {
float memberMemoryConsumptionAverage = memberStatsContext.getMemoryConsumption().getAverage();
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
index 1645cad..daff8ba 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/StatusChecker.java
@@ -172,7 +172,7 @@ public class StatusChecker {
*/
private boolean clusterActive(VMClusterMonitor monitor) {
boolean clusterActive = false;
- for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
+ /*for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
for (ClusterLevelPartitionContext clusterMonitorPartitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
if (clusterMonitorPartitionContext.getMinimumMemberCount() == clusterMonitorPartitionContext.getActiveMemberCount()) {
@@ -184,7 +184,7 @@ public class StatusChecker {
return false;
}
}
- }
+ }*/
return clusterActive;
}
@@ -198,13 +198,13 @@ public class StatusChecker {
boolean hasMember = false;
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
- for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+ /*for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
if (partitionContext.getNonTerminatedMemberCount() > 0) {
hasMember = true;
} else {
hasMember = false;
}
- }
+ }*/
}
return hasMember;
}
@@ -262,13 +262,13 @@ public class StatusChecker {
private boolean getClusterInactive(VMClusterMonitor monitor, String partitionId) {
boolean clusterInActive = false;
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
- for (ClusterLevelPartitionContext partition : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+ /*for (ClusterLevelPartitionContext partition : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
if (partitionId.equals(partition.getPartitionId()) &&
partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) {
clusterInActive = true;
return clusterInActive;
}
- }
+ }*/
}
return clusterInActive;
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
index 4b745f2..d6dc59e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusActiveProcessor.java
@@ -21,6 +21,8 @@ package org.apache.stratos.autoscaler.status.processor.cluster;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
+import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
@@ -65,9 +67,10 @@ public class ClusterStatusActiveProcessor extends ClusterStatusProcessor {
VMClusterMonitor monitor = (VMClusterMonitor) AutoscalerContext.getInstance().
getClusterMonitor(clusterId);
boolean clusterActive = false;
- for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getNetworkPartitionCtxts(instanceId).values()) {
+ for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getNetworkPartitionCtxts()) {
//minimum check per partition
- for (ClusterLevelPartitionContext clusterMonitorPartitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+ ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+ for (ClusterLevelPartitionContext clusterMonitorPartitionContext : instanceContext.getPartitionCtxts().values()) {
if (clusterMonitorPartitionContext.getMinimumMemberCount() == clusterMonitorPartitionContext.getActiveMemberCount()) {
clusterActive = true;
} else if (clusterMonitorPartitionContext.getActiveMemberCount() > clusterMonitorPartitionContext.getMinimumMemberCount()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
index b536371..01daa54 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusInActiveProcessor.java
@@ -21,6 +21,7 @@ package org.apache.stratos.autoscaler.status.processor.cluster;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
@@ -65,7 +66,7 @@ public class ClusterStatusInActiveProcessor extends ClusterStatusProcessor {
getClusterMonitor(clusterId);
boolean clusterInActive;
- clusterInActive = getClusterInactive(monitor);
+ clusterInActive = getClusterInactive(instanceId, monitor);
if(clusterInActive) {
//if the monitor is dependent, temporarily pausing it
if (monitor.hasStartupDependents()) {
@@ -89,10 +90,11 @@ public class ClusterStatusInActiveProcessor extends ClusterStatusProcessor {
return clusterInActive;
}
- private boolean getClusterInactive(VMClusterMonitor monitor) {
+ private boolean getClusterInactive(String instanceId, VMClusterMonitor monitor) {
boolean clusterInActive = false;
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
- for (ClusterLevelPartitionContext partition : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
+ ClusterInstanceContext instanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+ for (ClusterLevelPartitionContext partition : instanceContext.getPartitionCtxts().values()) {
if (partition.getActiveMemberCount() <= partition.getMinimumMemberCount()) {
clusterInActive = true;
return clusterInActive;
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
index 706ad9d..ec3528f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/processor/cluster/ClusterStatusTerminatedProcessor.java
@@ -21,6 +21,7 @@ package org.apache.stratos.autoscaler.status.processor.cluster;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
import org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
import org.apache.stratos.autoscaler.applications.ApplicationHolder;
@@ -122,13 +123,18 @@ public class ClusterStatusTerminatedProcessor extends ClusterStatusProcessor {
boolean hasMember = false;
for (ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext : monitor.getAllNetworkPartitionCtxts().values()) {
//minimum check per partition
- for (ClusterLevelPartitionContext partitionContext : clusterLevelNetworkPartitionContext.getPartitionCtxts().values()) {
- if (partitionContext.getNonTerminatedMemberCount() > 0) {
- hasMember = true;
- } else {
- hasMember = false;
+ for(ClusterInstanceContext clusterInstanceContext :
+ clusterLevelNetworkPartitionContext.getClusterInstanceContextMap().values()) {
+ for (ClusterLevelPartitionContext partitionContext :
+ clusterInstanceContext.getPartitionCtxts().values()) {
+ if (partitionContext.getNonTerminatedMemberCount() > 0) {
+ hasMember = true;
+ } else {
+ hasMember = false;
+ }
}
}
+
}
return hasMember;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
index 6989238..d095c37 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
@@ -35,6 +35,9 @@ public class ClusterDataHolder implements Serializable {
// Cluster id
private String clusterId;
+ private int minInstances;
+ private int maxInstances;
+
public ClusterDataHolder (String serviceType, String clusterId) {
this.serviceType = serviceType;
@@ -48,4 +51,20 @@ public class ClusterDataHolder implements Serializable {
public String getClusterId() {
return clusterId;
}
+
+ public int getMinInstances() {
+ return minInstances;
+ }
+
+ public void setMinInstances(int minInstances) {
+ this.minInstances = minInstances;
+ }
+
+ public int getMaxInstances() {
+ return maxInstances;
+ }
+
+ public void setMaxInstances(int maxInstances) {
+ this.maxInstances = maxInstances;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
index 1a6aaf6..bd737c2 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java
@@ -55,10 +55,12 @@ public class Cluster implements Serializable {
private String appId;
+ private String parentId;
+
private String loadBalanceAlgorithmName;
@XmlJavaTypeAdapter(MapAdapter.class)
private Properties properties;
- protected Map<String, ClusterInstance> instanceIdToInstanceContextMap;
+ private Map<String, ClusterInstance> instanceIdToInstanceContextMap;
//private LifeCycleStateManager<ClusterStatus> clusterStateManager;
public Cluster(String serviceName, String clusterId, String deploymentPolicyName,
@@ -70,7 +72,7 @@ public class Cluster implements Serializable {
this.setHostNames(new ArrayList<String>());
this.memberMap = new HashMap<String, Member>();
this.appId = appId;
- this.instanceIdToInstanceContextMap = new HashMap<String, ClusterInstance>();
+ this.setInstanceIdToInstanceContextMap(new HashMap<String, ClusterInstance>());
//this.clusterStateManager = new LifeCycleStateManager<ClusterStatus>(ClusterStatus.Created, clusterId);
// temporary; should be removed
//this.status = ClusterStatus.Created;
@@ -213,44 +215,44 @@ public class Cluster implements Serializable {
}
public boolean isStateTransitionValid(ClusterStatus newState, String clusterInstanceId) {
- return instanceIdToInstanceContextMap.get(clusterInstanceId).isStateTransitionValid(newState);
+ return getInstanceIdToInstanceContextMap().get(clusterInstanceId).isStateTransitionValid(newState);
}
public Stack<ClusterStatus> getTransitionedStates(String clusterInstanceId) {
- return instanceIdToInstanceContextMap.get(clusterInstanceId).getTransitionedStates();
+ return getInstanceIdToInstanceContextMap().get(clusterInstanceId).getTransitionedStates();
}
public ClusterStatus getStatus(String applicationInstanceId) {
//return status;
- return instanceIdToInstanceContextMap.get(applicationInstanceId).getStatus();
+ return getInstanceIdToInstanceContextMap().get(applicationInstanceId).getStatus();
}
public boolean setStatus(ClusterStatus newStatus, String applicationInstanceId) {
- return instanceIdToInstanceContextMap.get(applicationInstanceId).setStatus(newStatus);
+ return getInstanceIdToInstanceContextMap().get(applicationInstanceId).setStatus(newStatus);
}
public void addInstanceContext (String instanceId, ClusterInstance instanceContext) {
- instanceIdToInstanceContextMap.put(instanceId, instanceContext);
+ getInstanceIdToInstanceContextMap().put(instanceId, instanceContext);
}
public ClusterInstance getInstanceContexts (String instanceId) {
// if map is empty, return null
- if (instanceIdToInstanceContextMap.isEmpty()) {
+ if (getInstanceIdToInstanceContextMap().isEmpty()) {
return null;
}
// if instanceId is null, just get the first InstanceContext
if (instanceId == null) {
- return instanceIdToInstanceContextMap.entrySet().iterator().next().getValue();
+ return getInstanceIdToInstanceContextMap().entrySet().iterator().next().getValue();
}
- return instanceIdToInstanceContextMap.get(instanceId);
+ return getInstanceIdToInstanceContextMap().get(instanceId);
}
public int getInstanceContextCount () {
- return instanceIdToInstanceContextMap.keySet().size();
+ return getInstanceIdToInstanceContextMap().keySet().size();
}
public boolean equals(Object other) {
@@ -278,6 +280,25 @@ public class Cluster implements Serializable {
this.hostNames = hostNames;
}
+ public String getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(String parentId) {
+ this.parentId = parentId;
+ }
+
+ public Map<String, ClusterInstance> getInstanceIdToInstanceContextMap() {
+ return instanceIdToInstanceContextMap;
+ }
+
+ public void setInstanceIdToInstanceContextMap(Map<String, ClusterInstance> instanceIdToInstanceContextMap) {
+ this.instanceIdToInstanceContextMap = instanceIdToInstanceContextMap;
+ }
+
+ public Collection<ClusterInstance> getClusterInstances() {
+ return this.instanceIdToInstanceContextMap.values();
+ }
// public ClusterStatus getTempStatus() {
// return status;
// }
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
index 011c75a..47fbf7e 100755
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/AverageRequestsServingCapabilityEvent.java
@@ -8,12 +8,14 @@ public class AverageRequestsServingCapabilityEvent extends Event{
private final String networkPartitionId;
private final String clusterId;
private final float value;
+ private final String instanceId;
- public AverageRequestsServingCapabilityEvent(String networkPartitionId, String clusterId, float value) {
+ public AverageRequestsServingCapabilityEvent(String networkPartitionId, String clusterId, float value, String instanceId) {
this.networkPartitionId = networkPartitionId;
this.clusterId = clusterId;
this.value = value;
+ this.instanceId = instanceId;
}
public String getClusterId() {
return clusterId;
@@ -28,4 +30,7 @@ public class AverageRequestsServingCapabilityEvent extends Event{
}
+ public String getInstanceId() {
+ return instanceId;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4f2c1b70/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
index da358ff..e576ba8 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/health/stat/MemberFaultEvent.java
@@ -29,15 +29,17 @@ public class MemberFaultEvent extends Event {
private final String memberId;
private final String partitionId;
private final String instanceId;
+ private final String networkPartitionId;
private final float value;
public MemberFaultEvent(String clusterId, String memberId, String partitionId,
- String instanceId, float value) {
+ String instanceId, String networkPartitionId, float value) {
this.clusterId = clusterId;
this.instanceId = instanceId;
this.memberId = memberId;
this.partitionId = partitionId;
+ this.networkPartitionId = networkPartitionId;
this.value = value;
}
@@ -61,4 +63,8 @@ public class MemberFaultEvent extends Event {
public String getInstanceId() {
return instanceId;
}
+
+ public String getNetworkPartitionId() {
+ return networkPartitionId;
+ }
}