Repository: stratos Updated Branches: refs/heads/4.0.0-grouping 1788f1b54 -> 2dac52796
adding simple dependency builder and find out monitors from application monitor Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2dac5279 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2dac5279 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2dac5279 Branch: refs/heads/4.0.0-grouping Commit: 2dac527966315693f7fe4619a40d9218d20571fa Parents: 1788f1b Author: reka <[email protected]> Authored: Fri Sep 19 09:42:58 2014 +0530 Committer: reka <[email protected]> Committed: Fri Sep 19 09:42:58 2014 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/AutoscalerContext.java | 10 +---- .../autoscaler/grouping/DependencyBuilder.java | 5 ++- .../stratos/autoscaler/monitor/Monitor.java | 41 +++++++++++++++++--- .../monitor/application/ApplicationMonitor.java | 31 ++------------- .../autoscaler/monitor/group/GroupMonitor.java | 2 + 5 files changed, 45 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/2dac5279/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java index 2854f13..1145204 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java @@ -41,6 +41,7 @@ public class AutoscalerContext { try { setMonitors(new HashMap<String, ClusterMonitor>()); setLbMonitors(new HashMap<String, LbClusterMonitor>()); + setAppMonitors(new HashMap<String, ApplicationMonitor>()); } catch (Exception e) { log.error("Rule evaluateMinCheck error", e); } @@ -54,7 +55,6 @@ public class AutoscalerContext { // Map<LBClusterId, LBClusterMonitor> private Map<String, LbClusterMonitor> lbMonitors; - private Map<String, GroupMonitor> groupMonitors; private Map<String, ApplicationMonitor> appMonitors; @@ -70,14 +70,6 @@ public class AutoscalerContext { this.appMonitors = appMonitors; } - public Map<String, GroupMonitor> getGroupMonitors() { - return groupMonitors; - } - - public void setGroupMonitors(Map<String, GroupMonitor> groupMonitors) { - this.groupMonitors = groupMonitors; - } - public Map<String, StatusChecker> getStatusCheckers() { return statusCheckers; } http://git-wip-us.apache.org/repos/asf/stratos/blob/2dac5279/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java index 00bf9b4..a1e2406 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java @@ -20,6 +20,7 @@ package org.apache.stratos.autoscaler.grouping; import org.apache.stratos.messaging.domain.topology.Application; import org.apache.stratos.messaging.domain.topology.DependencyOrder; +import org.apache.stratos.messaging.domain.topology.ParentBehavior; import org.apache.stratos.messaging.domain.topology.StartupOrder; import java.util.LinkedList; @@ -32,10 +33,10 @@ import java.util.Set; */ public class DependencyBuilder { - public static Queue<String> getStartupOrder(Application application) { + public static Queue<String> getStartupOrder(ParentBehavior component) { Queue<String> startup = new LinkedList<String>(); - DependencyOrder dependencyOrder = application.getDependencyOrder(); + DependencyOrder dependencyOrder = component.getDependencyOrder(); Set<StartupOrder> startupOrderSet = dependencyOrder.getStartupOrders(); for (StartupOrder startupOrder : startupOrderSet) { http://git-wip-us.apache.org/repos/asf/stratos/blob/2dac5279/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java index 2291c06..6f66db1 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java @@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; import org.apache.stratos.autoscaler.exception.PartitionValidationException; import org.apache.stratos.autoscaler.exception.PolicyValidationException; +import org.apache.stratos.autoscaler.grouping.DependencyBuilder; import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor; import org.apache.stratos.autoscaler.monitor.cluster.LbClusterMonitor; import org.apache.stratos.autoscaler.monitor.group.GroupMonitor; @@ -30,11 +31,11 @@ import org.apache.stratos.autoscaler.status.checker.StatusChecker; import org.apache.stratos.autoscaler.util.AutoscalerUtil; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.messaging.domain.topology.Group; +import org.apache.stratos.messaging.domain.topology.ParentBehavior; import org.apache.stratos.messaging.event.Event; +import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; -import java.util.Map; -import java.util.Observable; -import java.util.Observer; +import java.util.*; /** * Monitor is to monitor it's child monitors and @@ -48,7 +49,16 @@ public abstract class Monitor implements Observer, Runnable { protected Map<String, GroupMonitor> groupMonitors; protected Map<String, AbstractClusterMonitor> abstractClusterMonitors; - protected Map<String, StatusChecker> statusCheckers; + + protected Queue<String> preOrderTraverse = new LinkedList<String>(); + + protected ParentBehavior component; + + public Monitor(ParentBehavior component) { + this.component = component; + startDependency(); + } + public Map<String, GroupMonitor> getGroupMonitors() { return groupMonitors; @@ -101,7 +111,28 @@ public abstract class Monitor implements Observer, Runnable { this.id = id; } - + public void startDependency() { + preOrderTraverse = DependencyBuilder.getStartupOrder(component); + + //TODO find out the parallel ones + + //start the first dependency + String dependency = preOrderTraverse.poll(); + if(dependency.contains("group")) { + startGroupMonitor(component.getGroup(dependency)); + } else if(dependency.contains("cartridge")) { + String clusterId = component.getClusterId(dependency); + Cluster cluster = null; + TopologyManager.acquireReadLock(); + cluster = TopologyManager.getTopology().getService(dependency).getCluster(clusterId); + TopologyManager.releaseReadLock(); + if(cluster != null) { + startClusterMonitor(cluster); + } else { + //TODO throw exception since Topology is inconsistent + } + } + } protected synchronized void startClusterMonitor(Cluster cluster) { Thread th = null; if (cluster.isLbCluster() http://git-wip-us.apache.org/repos/asf/stratos/blob/2dac5279/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java index 0b248f2..1407987 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java @@ -36,14 +36,10 @@ import java.util.*; */ public class ApplicationMonitor extends Monitor { private static final Log log = LogFactory.getLog(ApplicationMonitor.class); - private Application application; - private Queue<String> preOrderTraverse = new LinkedList<String>(); public ApplicationMonitor(Application application) { - this.application = application; - //TODO build dependencies and keep them here - startDependency(); - + super(application); + //TODO keep track of the parallel applications } @Override @@ -59,28 +55,7 @@ public class ApplicationMonitor extends Monitor { } - public void startDependency() { - preOrderTraverse = DependencyBuilder.getStartupOrder(application); - - //TODO find out the parallel ones - - //start the first dependency - String dependency = preOrderTraverse.poll(); - if(dependency.contains("group")) { - startGroupMonitor(application.getGroup(dependency)); - } else if(dependency.contains("cartridge")) { - String clusterId = application.getClusterId(dependency); - Cluster cluster = null; - TopologyManager.acquireReadLock(); - cluster = TopologyManager.getTopology().getService(dependency).getCluster(clusterId); - TopologyManager.releaseReadLock(); - if(cluster != null) { - startClusterMonitor(cluster); - } else { - //TODO throw exception since Topology is inconsistent - } - } - } + /** * Find the group monitor by traversing recursively in the hierarchical monitors. http://git-wip-us.apache.org/repos/asf/stratos/blob/2dac5279/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java index 1688b82..3b4b2f4 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java @@ -34,6 +34,8 @@ public class GroupMonitor extends Monitor { public GroupMonitor(Group group) { + super(group); + //TODO build dependencies and keep them here }
