Repository: stratos Updated Branches: refs/heads/master 1a395ec83 -> 9f0d671a4
fixing deployment policy parsing for cluster monitor Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9f0d671a Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9f0d671a Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9f0d671a Branch: refs/heads/master Commit: 9f0d671a4d80bce40ebdb123beb7c3931ea80bbf Parents: 1a395ec Author: reka <[email protected]> Authored: Wed Dec 3 23:12:22 2014 +0530 Committer: reka <[email protected]> Committed: Wed Dec 3 23:12:36 2014 +0530 ---------------------------------------------------------------------- .../context/cluster/ClusterInstanceContext.java | 3 +- .../context/cluster/VMClusterContext.java | 37 ++++++++++++++++---- .../partition/ClusterLevelPartitionContext.java | 1 + .../monitor/cluster/VMClusterMonitor.java | 6 ++-- .../monitor/component/ApplicationMonitor.java | 26 ++------------ .../ClusterInstanceCreatedMessageProcessor.java | 3 +- 6 files changed, 42 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/9f0d671a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java index 64c52cc..bf6a051 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterInstanceContext.java @@ -70,7 +70,8 @@ public class ClusterInstanceContext extends InstanceContext { private String networkPartitionId; - public ClusterInstanceContext(String clusterInstanceId, String partitionAlgo, ChildLevelPartition[] partitions, + public ClusterInstanceContext(String clusterInstanceId, String partitionAlgo, + ChildLevelPartition[] partitions, int min, String networkPartitionId) { super(clusterInstanceId); http://git-wip-us.apache.org/repos/asf/stratos/blob/9f0d671a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java index cf67481..47bd485 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java @@ -124,9 +124,24 @@ public class VMClusterContext extends AbstractClusterContext { throws PolicyValidationException, PartitionValidationException { ClusterLevelNetworkPartitionContext networkPartitionContext = null; ClusterInstance clusterInstance = cluster.getInstanceContexts(instanceId); + ChildPolicy policy = this.deploymentPolicy. + getChildPolicy( + AutoscalerUtil.getAliasFromClusterId(clusterId)); if (networkPartitionCtxts.containsKey(clusterInstance.getNetworkPartitionId())) { networkPartitionContext = this.networkPartitionCtxts.get( clusterInstance.getNetworkPartitionId()); + } else { + if(policy != null) { + ChildLevelNetworkPartition networkPartition = policy. + getChildLevelNetworkPartition(clusterInstance.getNetworkPartitionId()); + networkPartitionContext = new ClusterLevelNetworkPartitionContext(networkPartition.getId(), + networkPartition.getPartitionAlgo(), 0); + } else { + //Parent should have the partition specified + networkPartitionContext = new ClusterLevelNetworkPartitionContext(clusterInstance.getNetworkPartitionId(), + null, 0); + } + } if (clusterInstance.getPartitionId() != null) { @@ -134,9 +149,6 @@ public class VMClusterContext extends AbstractClusterContext { networkPartitionContext = addPartition(clusterInstance, cluster, networkPartitionContext); } else { - ChildPolicy policy = this.deploymentPolicy. - getChildPolicy( - AutoscalerUtil.getAliasFromClusterId(clusterId)); networkPartitionContext = parseDeploymentPolicy(clusterInstance, cluster, policy, networkPartitionContext); } @@ -200,7 +212,18 @@ public class VMClusterContext extends AbstractClusterContext { if (clusterInstanceContext == null) { clusterInstanceContext = new ClusterInstanceContext(instance.getInstanceId(), networkPartition.getPartitionAlgo(), - networkPartition.getChildLevelPartitions(), networkPartition.getMin(), networkPartitionId); + networkPartition.getChildLevelPartitions(), 2, + networkPartitionId); + try { + Application application = ApplicationHolder.getApplications(). + getApplication(cluster.getAppId()); + ClusterDataHolder dataHolder = application. + getClusterData(AutoscalerUtil.getAliasFromClusterId(clusterId)); + clusterInstanceContext.setMinMembers(2); //dataHolder.getMinInstances()); + clusterInstanceContext.setMaxMembers(2); //dataHolder.getMaxInstances()); + } finally { + ApplicationHolder.releaseReadLock(); + } } for (ChildLevelPartition partition : networkPartition.getChildLevelPartitions()) { @@ -224,6 +247,8 @@ public class VMClusterContext extends AbstractClusterContext { } } + clusterLevelNetworkPartitionContext.addClusterInstanceContext(clusterInstanceContext); + if (log.isInfoEnabled()) { log.info(String.format("Network partition context has been added: " + "[network partition] %s", clusterLevelNetworkPartitionContext.getId())); @@ -280,8 +305,8 @@ public class VMClusterContext extends AbstractClusterContext { Application application = ApplicationHolder.getApplications(). getApplication(cluster.getAppId()); ClusterDataHolder dataHolder = application.getClusterData(AutoscalerUtil.getAliasFromClusterId(clusterId)); - clusterInstanceContext.setMinMembers(dataHolder.getMinInstances()); - clusterInstanceContext.setMaxMembers(dataHolder.getMaxInstances()); + clusterInstanceContext.setMinMembers(2); //dataHolder.getMinInstances()); + clusterInstanceContext.setMaxMembers(2); //dataHolder.getMaxInstances()); } finally { ApplicationHolder.releaseReadLock(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/9f0d671a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java index ed88117..e9c3cff 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/partition/ClusterLevelPartitionContext.java @@ -84,6 +84,7 @@ public class ClusterLevelPartitionContext extends PartitionContext implements Se super(memberExpiryTime); this.activeMembers = new ArrayList<MemberContext>(); this.terminationPendingMembers = new ArrayList<MemberContext>(); + this.pendingMembers = new ArrayList<MemberContext>(); } public ClusterLevelPartitionContext(ChildLevelPartition childLevelPartition, Partition partition, int max) { http://git-wip-us.apache.org/repos/asf/stratos/blob/9f0d671a/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 7910d43..0dabfe9 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 @@ -79,7 +79,7 @@ public class VMClusterMonitor extends AbstractClusterMonitor { autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE); autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.VM_SCALE_CHECK_DROOL_FILE); autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.VM_MIN_CHECK_DROOL_FILE); - autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.DEPENDENT_SCALE_CHECK_DROOL_FILE); + //autoscalerRuleEvaluator.parseAndBuildKnowledgeBaseForDroolsFile(StratosConstants.DEPENDENT_SCALE_CHECK_DROOL_FILE); this.obsoleteCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession( StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE); @@ -87,8 +87,8 @@ public class VMClusterMonitor extends AbstractClusterMonitor { StratosConstants.VM_SCALE_CHECK_DROOL_FILE); this.minCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession( StratosConstants.VM_MIN_CHECK_DROOL_FILE); - this.dependentScaleCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession( - StratosConstants.DEPENDENT_SCALE_CHECK_DROOL_FILE); + /*this.dependentScaleCheckKnowledgeSession = autoscalerRuleEvaluator.getStatefulSession( + StratosConstants.DEPENDENT_SCALE_CHECK_DROOL_FILE);*/ } private static void terminateMember(String memberId) { http://git-wip-us.apache.org/repos/asf/stratos/blob/9f0d671a/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 262b34a..4a8ae19 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 @@ -55,8 +55,6 @@ public class ApplicationMonitor extends ParentComponentMonitor { //network partition contexts private Map<String, ApplicationLevelNetworkPartitionContext> networkPartitionCtxts; - //application instance id map - private Map<String, ApplicationInstance> applicationInstanceIdMap; //Flag to set whether application is terminating private boolean isTerminating; @@ -67,7 +65,6 @@ public class ApplicationMonitor extends ParentComponentMonitor { //setting the appId for the application this.appId = application.getUniqueIdentifier(); networkPartitionCtxts = new HashMap<String, ApplicationLevelNetworkPartitionContext>(); - setApplicationInstanceIdMap(new HashMap<String, ApplicationInstance>()); } /** @@ -111,7 +108,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { * @param status the status */ public void setStatus(ApplicationStatus status, String instanceId) { - this.applicationInstanceIdMap.get(instanceId).setStatus(status); + ((ApplicationInstance)this.instanceIdToInstanceMap.get(instanceId)).setStatus(status); //notify the children about the state change try { @@ -220,7 +217,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { ApplicationInstance instance = new ApplicationInstance(appId, instanceId); instance.setStatus(ApplicationStatus.Created); instance.setNetworkPartitionId(networkPartition.getId()); - this.applicationInstanceIdMap.put(instanceId, instance); + this.instanceIdToInstanceMap.put(instanceId, instance); this.networkPartitionCtxts.put(context.getId(), context); @@ -266,7 +263,7 @@ public class ApplicationMonitor extends ParentComponentMonitor { ApplicationInstance instance = new ApplicationInstance(appId, instanceId); instance.setStatus(ApplicationStatus.Created); - this.applicationInstanceIdMap.put(instanceId, instance); + this.instanceIdToInstanceMap.put(instanceId, instance); burstNPFound = true; } @@ -318,23 +315,6 @@ public class ApplicationMonitor extends ParentComponentMonitor { this.networkPartitionCtxts.put(applicationLevelNetworkPartitionContext.getId(), applicationLevelNetworkPartitionContext); } - public Map<String, ApplicationInstance> getApplicationInstanceIdMap() { - return applicationInstanceIdMap; - } - - public void setApplicationInstanceIdMap(Map<String, ApplicationInstance> applicationInstanceIdMap) { - this.applicationInstanceIdMap = applicationInstanceIdMap; - } - - public void addApplicationInstance(ApplicationInstance instance) { - this.applicationInstanceIdMap.put(instance.getInstanceId(), instance); - - } - - public ApplicationInstance getApplicationInstance(String instanceId) { - return this.applicationInstanceIdMap.get(instanceId); - } - public boolean isTerminating() { return isTerminating; } http://git-wip-us.apache.org/repos/asf/stratos/blob/9f0d671a/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 cb195c5..a0bf735 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 @@ -118,7 +118,8 @@ public class ClusterInstanceCreatedMessageProcessor extends MessageProcessor { ClusterInstance context = new ClusterInstance(event.getAlias(), event.getClusterId(), event.getInstanceId()); - //context.setStatus(ClusterStatus.Created); + context.setNetworkPartitionId(event.getNetworkPartitionId()); + context.setPartitionId(event.getPartitionId()); cluster.addInstanceContext(event.getInstanceId(), context); } // Notify event listeners
