Updating clustor monitors to use new cluster contexts
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/02a65b3d Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/02a65b3d Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/02a65b3d Branch: refs/heads/master Commit: 02a65b3d266ab172e4036bae65a5952103632bb7 Parents: e603f74 Author: Lahiru Sandaruwan <[email protected]> Authored: Sun Nov 9 12:45:18 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Sun Nov 9 12:45:18 2014 +0530 ---------------------------------------------------------------------- .../monitor/cluster/AbstractClusterMonitor.java | 41 ++++----- .../monitor/cluster/ClusterMonitorFactory.java | 74 ++++++++------- .../cluster/KubernetesClusterMonitor.java | 14 +-- .../KubernetesServiceClusterMonitor.java | 21 +++-- .../monitor/cluster/VMClusterMonitor.java | 97 ++++++-------------- .../monitor/cluster/VMLbClusterMonitor.java | 18 ++-- .../cluster/VMServiceClusterMonitor.java | 29 +++--- 7 files changed, 124 insertions(+), 170 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/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 755931c..8b4f107 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 @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.autoscaler.AbstractClusterContext; import org.apache.stratos.autoscaler.exception.InvalidArgumentException; import org.apache.stratos.autoscaler.monitor.Monitor; import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder; @@ -62,12 +63,10 @@ import org.drools.runtime.rule.FactHandle; * Every cluster monitor, which are monitoring a cluster, should extend this class. */ public abstract class AbstractClusterMonitor extends Monitor implements Runnable { - + private static final Log log = LogFactory.getLog(AbstractClusterMonitor.class); private String clusterId; - private String serviceId; - private String appId; private ClusterStatus status; private int monitoringIntervalMilliseconds; @@ -83,15 +82,17 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable protected boolean hasFaultyMember = false; protected boolean stop = false; + protected AbstractClusterContext clusterContext; + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - protected AbstractClusterMonitor(String clusterId, String serviceId, - AutoscalerRuleEvaluator autoscalerRuleEvaluator) { + protected AbstractClusterMonitor(String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator, + AbstractClusterContext abstractClusterContext) { super(); this.clusterId = clusterId; - this.serviceId = serviceId; this.autoscalerRuleEvaluator = autoscalerRuleEvaluator; + this.clusterContext = abstractClusterContext; this.obsoleteCheckKnowledgeSession = autoscalerRuleEvaluator.getObsoleteCheckStatefulSession(); this.scaleCheckKnowledgeSession = autoscalerRuleEvaluator.getScaleCheckStatefulSession(); this.minCheckKnowledgeSession = autoscalerRuleEvaluator.getMinCheckStatefulSession(); @@ -177,7 +178,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable public abstract void handleClusterRemovedEvent(ClusterRemovedEvent clusterRemovedEvent); public abstract void handleDynamicUpdates(Properties properties) throws InvalidArgumentException; - + @Override public int hashCode() { final int prime = 31; @@ -185,7 +186,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable result = prime * result + ((this.clusterId == null) ? 0 : this.clusterId.hashCode()); return result; } - + @Override public boolean equals(final Object obj) { if (this == obj) { @@ -245,14 +246,6 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable //} } - - public String getServiceId() { - return serviceId; - } - - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } public int getMonitorIntervalMilliseconds() { return monitoringIntervalMilliseconds; @@ -269,11 +262,11 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable public void setMinCheckFactHandle(FactHandle minCheckFactHandle) { this.minCheckFactHandle = minCheckFactHandle; } - + public FactHandle getObsoleteCheckFactHandle() { return obsoleteCheckFactHandle; } - + public void setObsoleteCheckFactHandle(FactHandle obsoleteCheckFactHandle) { this.obsoleteCheckFactHandle = obsoleteCheckFactHandle; } @@ -281,7 +274,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable public FactHandle getScaleCheckFactHandle() { return scaleCheckFactHandle; } - + public void setScaleCheckFactHandle(FactHandle scaleCheckFactHandle) { this.scaleCheckFactHandle = scaleCheckFactHandle; } @@ -294,7 +287,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable StatefulKnowledgeSession minCheckKnowledgeSession) { this.minCheckKnowledgeSession = minCheckKnowledgeSession; } - + public StatefulKnowledgeSession getObsoleteCheckKnowledgeSession() { return obsoleteCheckKnowledgeSession; } @@ -329,7 +322,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable AutoscalerRuleEvaluator autoscalerRuleEvaluator) { this.autoscalerRuleEvaluator = autoscalerRuleEvaluator; } - + public String getAppId() { return this.appId; } @@ -368,7 +361,7 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable } public abstract void terminateAllMembers(); - + public boolean isStop() { return stop; } @@ -376,4 +369,8 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable public void setStop(boolean stop) { this.stop = stop; } + + public String getServiceId(){ + return clusterContext.getServiceId(); + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java index 19b49f2..8911458 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java @@ -41,6 +41,7 @@ import org.apache.stratos.messaging.domain.topology.Member; import org.apache.stratos.messaging.domain.topology.MemberStatus; import org.apache.stratos.messaging.util.Constants; +import java.util.HashMap; import java.util.Map; import java.util.Random; @@ -88,7 +89,7 @@ public class ClusterMonitorFactory { log.debug("Autoscaler policy name: " + autoscalePolicyName); } - AutoscalePolicy policy = + AutoscalePolicy autoscalePolicy = PolicyManager.getInstance() .getAutoscalePolicy(autoscalePolicyName); DeploymentPolicy deploymentPolicy = @@ -112,14 +113,12 @@ public class ClusterMonitorFactory { CloudControllerClient.getInstance().validateDeploymentPolicy(cluster.getServiceName(), deploymentPolicy); - VMServiceClusterMonitor clusterMonitor = - new VMServiceClusterMonitor(cluster.getClusterId(), - cluster.getServiceName(), - deploymentPolicy, policy); + Map<String, NetworkPartitionContext> networkPartitionContextMap = new HashMap<String, NetworkPartitionContext>(); for (PartitionGroup partitionGroup : deploymentPolicy.getPartitionGroups()) { - NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId(), + String networkPartitionId = partitionGroup.getId(); + NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(networkPartitionId, partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions()); @@ -173,7 +172,7 @@ public class ClusterMonitorFactory { } } - clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext); + networkPartitionContextMap.put(networkPartitionId, networkPartitionContext); if (log.isInfoEnabled()) { log.info(String.format("Network partition context has been added: [network partition] %s", networkPartitionContext.getId())); @@ -181,6 +180,11 @@ public class ClusterMonitorFactory { } + VMServiceClusterContext clusterContext = + new VMServiceClusterContext(cluster.getClusterId(), cluster.getServiceName(), autoscalePolicy, + deploymentPolicy, networkPartitionContextMap); + VMServiceClusterMonitor clusterMonitor = new VMServiceClusterMonitor(cluster.getClusterId(), + clusterContext); // find lb reference type java.util.Properties props = cluster.getProperties(); @@ -232,7 +236,7 @@ public class ClusterMonitorFactory { log.debug("Autoscaler policy name: " + autoscalePolicyName); } - AutoscalePolicy policy = + AutoscalePolicy autoscalePolicy = PolicyManager.getInstance() .getAutoscalePolicy(autoscalePolicyName); DeploymentPolicy deploymentPolicy = @@ -246,17 +250,16 @@ public class ClusterMonitorFactory { } String clusterId = cluster.getClusterId(); - VMLbClusterMonitor clusterMonitor = - new VMLbClusterMonitor(clusterId, - cluster.getServiceName(), - deploymentPolicy, policy); - clusterMonitor.setStatus(ClusterStatus.Created); + + Map<String, NetworkPartitionContext> networkPartitionContextMap = new HashMap<String, NetworkPartitionContext>(); + // partition group = network partition context for (PartitionGroup partitionGroup : deploymentPolicy.getPartitionGroups()) { + String networkPartitionId = partitionGroup.getId(); NetworkPartitionLbHolder networkPartitionLbHolder = PartitionManager.getInstance() - .getNetworkPartitionLbHolder(partitionGroup.getId()); + .getNetworkPartitionLbHolder(networkPartitionId); // PartitionManager.getInstance() // .getNetworkPartitionLbHolder(partitionGroup.getId()); // FIXME pick a random partition @@ -265,10 +268,10 @@ public class ClusterMonitorFactory { PartitionContext partitionContext = new PartitionContext(partition); partitionContext.setServiceName(cluster.getServiceName()); partitionContext.setProperties(cluster.getProperties()); - partitionContext.setNetworkPartitionId(partitionGroup.getId()); + partitionContext.setNetworkPartitionId(networkPartitionId); partitionContext.setMinimumMemberCount(1);//Here it hard codes the minimum value as one for LB cartridge partitions - NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId(), + NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(networkPartitionId, partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions()); for (Member member : cluster.getMembers()) { @@ -335,9 +338,17 @@ public class ClusterMonitorFactory { } } - clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext); + networkPartitionContextMap.put(networkPartitionId, networkPartitionContext); } + VMClusterContext clusterContext = new VMClusterContext(clusterId, cluster.getServiceName(), autoscalePolicy, + deploymentPolicy, networkPartitionContextMap); + + VMLbClusterMonitor clusterMonitor = + new VMLbClusterMonitor(clusterId, + cluster.getServiceName(), clusterContext); + clusterMonitor.setStatus(ClusterStatus.Created); + log.info("VMLbClusterMonitor created: " + clusterMonitor.toString()); return clusterMonitor; } @@ -354,6 +365,10 @@ public class ClusterMonitorFactory { } String autoscalePolicyName = cluster.getAutoscalePolicyName(); + + AutoscalePolicy autoscalePolicy = + PolicyManager.getInstance() + .getAutoscalePolicy(autoscalePolicyName); if (log.isDebugEnabled()) { log.debug("Autoscaling policy name: " + autoscalePolicyName); } @@ -373,28 +388,25 @@ public class ClusterMonitorFactory { log.error(message); throw new RuntimeException(message); } - - String kubernetesHostClusterID = properties.getProperty(StratosConstants.KUBERNETES_CLUSTER_ID); - KubernetesClusterContext kubernetesClusterCtxt = new KubernetesClusterContext(kubernetesHostClusterID, - cluster.getClusterId()); - String minReplicasProperty = properties.getProperty(StratosConstants.KUBERNETES_MIN_REPLICAS); + int minReplicas = 0; if (minReplicasProperty != null && !minReplicasProperty.isEmpty()) { - int minReplicas = Integer.parseInt(minReplicasProperty); - kubernetesClusterCtxt.setMinReplicas(minReplicas); + minReplicas = Integer.parseInt(minReplicasProperty); } + int maxReplicas = 0; String maxReplicasProperty = properties.getProperty(StratosConstants.KUBERNETES_MAX_REPLICAS); if (maxReplicasProperty != null && !maxReplicasProperty.isEmpty()) { - int maxReplicas = Integer.parseInt(maxReplicasProperty); - kubernetesClusterCtxt.setMaxReplicas(maxReplicas); + maxReplicas = Integer.parseInt(maxReplicasProperty); } - KubernetesServiceClusterMonitor dockerClusterMonitor = new KubernetesServiceClusterMonitor( - kubernetesClusterCtxt, - cluster.getClusterId(), - cluster.getServiceName(), - policy.getId()); + String kubernetesHostClusterID = properties.getProperty(StratosConstants.KUBERNETES_CLUSTER_ID); + KubernetesClusterContext kubernetesClusterCtxt = new KubernetesClusterContext(kubernetesHostClusterID, + cluster.getClusterId(), cluster.getServiceName(), autoscalePolicy, minReplicas, maxReplicas); + + + KubernetesServiceClusterMonitor dockerClusterMonitor = new KubernetesServiceClusterMonitor(cluster.getClusterId() + , kubernetesClusterCtxt); //populate the members after restarting for (Member member : cluster.getMembers()) { http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/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 b42791c..5fb84c9 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 @@ -62,16 +62,13 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor { private static final Log log = LogFactory.getLog(KubernetesClusterMonitor.class); private KubernetesClusterContext kubernetesClusterCtxt; - protected String autoscalePolicyId; - protected KubernetesClusterMonitor(String clusterId, String serviceId, - KubernetesClusterContext kubernetesClusterContext, + protected KubernetesClusterMonitor(String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator, - String autoscalePolicyId) { + KubernetesClusterContext kubernetesClusterContext) { - super(clusterId, serviceId, autoscalerRuleEvaluator); + super(clusterId, autoscalerRuleEvaluator, kubernetesClusterContext); this.kubernetesClusterCtxt = kubernetesClusterContext; - this.autoscalePolicyId = autoscalePolicyId; } @Override @@ -373,7 +370,7 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor { } return; } - + if (!getKubernetesClusterCtxt().activeMemberExist(memberId)) { if (log.isDebugEnabled()) { log.debug(String.format("Could not find the active member in kubernetes cluster context, " @@ -488,9 +485,6 @@ public abstract class KubernetesClusterMonitor extends AbstractClusterMonitor { this.kubernetesClusterCtxt = kubernetesClusterCtxt; } - public AutoscalePolicy getAutoscalePolicy() { - return PolicyManager.getInstance().getAutoscalePolicy(autoscalePolicyId); - } private Member getMemberByMemberId(String memberId) { try { http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/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 af4b09e..4944b47 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 @@ -26,6 +26,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.KubernetesClusterContext; import org.apache.stratos.autoscaler.exception.InvalidArgumentException; +import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; import org.apache.stratos.autoscaler.util.AutoScalerConstants; import org.apache.stratos.autoscaler.util.ConfUtil; @@ -43,15 +44,13 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni private String lbReferenceType; - public KubernetesServiceClusterMonitor(KubernetesClusterContext kubernetesClusterCtxt, - String serviceClusterID, String serviceId, - String autoscalePolicyId) { - super(serviceClusterID, serviceId, kubernetesClusterCtxt, + public KubernetesServiceClusterMonitor(String clusterId, KubernetesClusterContext kubernetesClusterCtxt) { + super(clusterId, new AutoscalerRuleEvaluator( StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE, StratosConstants.CONTAINER_OBSOLETE_CHECK_DROOL_FILE, StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE), - autoscalePolicyId); + kubernetesClusterCtxt); readConfigurations(); } @@ -116,7 +115,12 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni } } - private void minCheck() { + private AutoscalePolicy getAutoscalePolicy() { + KubernetesClusterContext kubernetesClusterContext = (KubernetesClusterContext) clusterContext; + return kubernetesClusterContext.getAutoscalePolicy(); + } + + private void minCheck() { getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); String kubernetesClusterID = getKubernetesClusterCtxt().getKubernetesClusterID(); if (log.isDebugEnabled()) { @@ -127,7 +131,7 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni getMinCheckKnowledgeSession(), minCheckFactHandle, getKubernetesClusterCtxt()); } - + private void obsoleteCheck() { getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); String kubernetesClusterID = getKubernetesClusterCtxt().getKubernetesClusterID(); @@ -166,8 +170,7 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni public String toString() { return "KubernetesServiceClusterMonitor " + "[ kubernetesHostClusterId=" + getKubernetesClusterCtxt().getKubernetesClusterID() - + ", clusterId=" + getClusterId() - + ", serviceId=" + getServiceId() + "]"; + + ", clusterId=" + getClusterId() + "]"; } public String getLbReferenceType() { http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/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 97f3da6..3df547c 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 @@ -22,10 +22,7 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.AutoscalerContext; -import org.apache.stratos.autoscaler.MemberStatsContext; -import org.apache.stratos.autoscaler.NetworkPartitionContext; -import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.*; import org.apache.stratos.autoscaler.client.CloudControllerClient; import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy; import org.apache.stratos.autoscaler.exception.InvalidArgumentException; @@ -55,19 +52,9 @@ import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; abstract public class VMClusterMonitor extends AbstractClusterMonitor { private static final Log log = LogFactory.getLog(VMClusterMonitor.class); - // Map<NetworkpartitionId, Network Partition Context> - protected Map<String, NetworkPartitionContext> networkPartitionCtxts; - protected DeploymentPolicy deploymentPolicy; - protected AutoscalePolicy autoscalePolicy; - - protected VMClusterMonitor(String clusterId, String serviceId, - AutoscalerRuleEvaluator autoscalerRuleEvaluator, - DeploymentPolicy deploymentPolicy, AutoscalePolicy autoscalePolicy, - Map<String, NetworkPartitionContext> networkPartitionCtxts) { - super(clusterId, serviceId, autoscalerRuleEvaluator); - this.deploymentPolicy = deploymentPolicy; - this.autoscalePolicy = autoscalePolicy; - this.networkPartitionCtxts = networkPartitionCtxts; + protected VMClusterMonitor(String clusterId, AutoscalerRuleEvaluator autoscalerRuleEvaluator, + VMClusterContext vmClusterContext) { + super(clusterId, autoscalerRuleEvaluator, vmClusterContext); } @Override @@ -573,10 +560,10 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { ClusterRemovedEvent clusterRemovedEvent) { } - + @Override public void handleDynamicUpdates(Properties properties) throws InvalidArgumentException { - + } private String getNetworkPartitionIdByMemberId(String memberId) { @@ -606,17 +593,6 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { } } - public NetworkPartitionContext getNetworkPartitionCtxt(Member member) { - log.info("***** getNetworkPartitionCtxt " + member.getNetworkPartitionId()); - String networkPartitionId = member.getNetworkPartitionId(); - if (networkPartitionCtxts.containsKey(networkPartitionId)) { - log.info("returnnig network partition context " + networkPartitionCtxts.get(networkPartitionId)); - return networkPartitionCtxts.get(networkPartitionId); - } - log.info("returning null getNetworkPartitionCtxt"); - return null; - } - public String getPartitionOfMember(String memberId) { for (Service service : TopologyManager.getTopology().getServices()) { for (Cluster cluster : service.getClusters()) { @@ -628,53 +604,13 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { return null; } - public DeploymentPolicy getDeploymentPolicy() { - return deploymentPolicy; - } - - public void setDeploymentPolicy(DeploymentPolicy deploymentPolicy) { - this.deploymentPolicy = deploymentPolicy; - } - - public AutoscalePolicy getAutoscalePolicy() { - return autoscalePolicy; - } - - public void setAutoscalePolicy(AutoscalePolicy autoscalePolicy) { - this.autoscalePolicy = autoscalePolicy; - } - - public Map<String, NetworkPartitionContext> getNetworkPartitionCtxts() { - return networkPartitionCtxts; - } - - public NetworkPartitionContext getNetworkPartitionCtxt(String networkPartitionId) { - return networkPartitionCtxts.get(networkPartitionId); - } - - public void setPartitionCtxt(Map<String, NetworkPartitionContext> partitionCtxt) { - this.networkPartitionCtxts = partitionCtxt; - } - - public boolean partitionCtxtAvailable(String partitionId) { - return networkPartitionCtxts.containsKey(partitionId); - } - - public void addNetworkPartitionCtxt(NetworkPartitionContext ctxt) { - this.networkPartitionCtxts.put(ctxt.getId(), ctxt); - } - - public NetworkPartitionContext getPartitionCtxt(String id) { - return this.networkPartitionCtxts.get(id); - } - @Override public void terminateAllMembers() { Thread memberTerminator = new Thread(new Runnable(){ public void run(){ - for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) { + for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts().values()) { for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts().values()) { //if (log.isDebugEnabled()) { log.info("Starting to terminate all members in Network Partition [ " + @@ -711,6 +647,23 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { memberTerminator.start(); } + public Map<String, NetworkPartitionContext> getNetworkPartitionCtxts() { + + VMClusterContext vmClusterContext = (VMClusterContext) clusterContext; + return vmClusterContext.getNetworkPartitionCtxts(); + } + protected NetworkPartitionContext getNetworkPartitionCtxt(String id) { + + VMClusterContext vmClusterContext = (VMClusterContext) clusterContext; + return vmClusterContext.getNetworkPartitionCtxt(id); + } + + protected NetworkPartitionContext getNetworkPartitionCtxt(Member member) { + + VMClusterContext vmClusterContext = (VMClusterContext) clusterContext; + return vmClusterContext.getNetworkPartitionCtxt(member); + } + private static void terminateMember (String memberId) { try { CloudControllerClient.getInstance().terminate(memberId); @@ -719,4 +672,6 @@ abstract public class VMClusterMonitor extends AbstractClusterMonitor { log.error("Unable to terminate member [member id ] " + memberId, e); } } + + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/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 b9abc50..fff4a52 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 @@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.NetworkPartitionContext; import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.VMClusterContext; import org.apache.stratos.autoscaler.partition.PartitionManager; import org.apache.stratos.autoscaler.policy.PolicyManager; import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; @@ -47,15 +48,10 @@ public class VMLbClusterMonitor extends VMClusterMonitor { private static final Log log = LogFactory.getLog(VMLbClusterMonitor.class); - public VMLbClusterMonitor(String clusterId, String serviceId, DeploymentPolicy deploymentPolicy, - AutoscalePolicy autoscalePolicy) { - super(clusterId, serviceId, - new AutoscalerRuleEvaluator( - StratosConstants.VM_MIN_CHECK_DROOL_FILE, - StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, - StratosConstants.VM_SCALE_CHECK_DROOL_FILE), - deploymentPolicy, autoscalePolicy, - new ConcurrentHashMap<String, NetworkPartitionContext>()); + 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); readConfigurations(); } @@ -88,7 +84,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor { @Override protected void monitor() { // TODO make this concurrent - for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) { + for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts().values()) { // minimum check per partition for (PartitionContext partitionContext : networkPartitionContext.getPartitionCtxts() @@ -173,7 +169,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor { @Override public String toString() { - return "VMLbClusterMonitor [clusterId=" + getClusterId() + ", serviceId=" + getServiceId() + "]"; + return "VMLbClusterMonitor [clusterId=" + getClusterId() + "]"; } } http://git-wip-us.apache.org/repos/asf/stratos/blob/02a65b3d/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 4a4926b..57b5850 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 @@ -27,6 +27,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.NetworkPartitionContext; import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.VMServiceClusterContext; import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent; import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; @@ -53,18 +54,15 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { private String lbReferenceType; private boolean hasPrimary; - public VMServiceClusterMonitor(String clusterId, String serviceId, - DeploymentPolicy deploymentPolicy, - AutoscalePolicy autoscalePolicy) { - super(clusterId, serviceId, new AutoscalerRuleEvaluator( - StratosConstants.VM_MIN_CHECK_DROOL_FILE, - StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, - StratosConstants.VM_SCALE_CHECK_DROOL_FILE), - deploymentPolicy, autoscalePolicy, - new ConcurrentHashMap<String, NetworkPartitionContext>()); + public VMServiceClusterMonitor(String clusterId, VMServiceClusterContext vmServiceClusterContext) { + super(clusterId, new AutoscalerRuleEvaluator( + StratosConstants.VM_MIN_CHECK_DROOL_FILE, + StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, + StratosConstants.VM_SCALE_CHECK_DROOL_FILE), vmServiceClusterContext + ); readConfigurations(); } - + //TODO why this method? // private static void terminateMember(String memberId) { // try { @@ -103,7 +101,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { } - + //TODO why this method? // @Override // public void terminateAllMembers() { @@ -170,7 +168,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { public void monitor() { //TODO make this concurrent - for (NetworkPartitionContext networkPartitionContext : networkPartitionCtxts.values()) { + for (NetworkPartitionContext networkPartitionContext : getNetworkPartitionCtxts().values()) { // store primary members in the network partition context List<String> primaryMemberListInNetworkPartition = new ArrayList<String>(); //minimum check per partition @@ -202,8 +200,8 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession() , minCheckFactHandle, partitionContext); - - obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(), + + obsoleteCheckFactHandle = AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(), obsoleteCheckFactHandle, partitionContext); //checking the status of the cluster @@ -273,8 +271,7 @@ public class VMServiceClusterMonitor extends VMClusterMonitor { @Override public String toString() { - return "VMServiceClusterMonitor [clusterId=" + getClusterId() + ", serviceId=" + getServiceId() + - ", deploymentPolicy=" + deploymentPolicy + ", autoscalePolicy=" + autoscalePolicy + + return "VMServiceClusterMonitor [clusterId=" + getClusterId() + ", lbReferenceType=" + lbReferenceType + ", hasPrimary=" + hasPrimary + " ]"; }
