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/12/08 07:11:12 UTC

stratos git commit: removing status from cluster monitor and fixing relevant places to get status from cluster instance

Repository: stratos
Updated Branches:
  refs/heads/master b21f3ec93 -> d830fab50


removing status from cluster monitor and fixing relevant places to get status from cluster instance


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d830fab5
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d830fab5
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d830fab5

Branch: refs/heads/master
Commit: d830fab50315f20f3a8d664de9c4024ec41a087d
Parents: b21f3ec
Author: reka <rt...@gmail.com>
Authored: Sun Dec 7 23:39:47 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Sun Dec 7 23:39:47 2014 +0530

----------------------------------------------------------------------
 .../monitor/cluster/AbstractClusterMonitor.java |  8 -----
 .../KubernetesServiceClusterMonitor.java        |  6 ++--
 .../monitor/cluster/VMClusterMonitor.java       |  2 +-
 .../monitor/component/GroupMonitor.java         | 34 ++++++++++++++++++++
 .../component/ParentComponentMonitor.java       |  8 ++---
 5 files changed, 42 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d830fab5/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 5710ef4..277948f 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
@@ -70,7 +70,6 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
     private AtomicBoolean monitoringStarted;
     private String clusterId;
     private Cluster cluster;
-    private ClusterStatus status;
     private int monitoringIntervalMilliseconds;
     private boolean isDestroyed;
 
@@ -81,9 +80,6 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
         this.serviceType = cluster.getServiceName();
         this.clusterId = cluster.getClusterId();
         this.monitoringStarted = new AtomicBoolean(false);
-        //this.clusterContext = abstractClusterContext;
-        //this.instanceIdToClusterContextMap = new HashMap<String, AbstractClusterContext>();
-        this.status = ClusterStatus.Created;
     }
 
     protected abstract void readConfigurations();
@@ -205,10 +201,6 @@ public abstract class AbstractClusterMonitor extends Monitor implements Runnable
         this.clusterId = clusterId;
     }
 
-    public ClusterStatus getStatus() {
-        return status;
-    }
-
     public void notifyParentMonitor(ClusterStatus status, String instanceId) {
         /**
          * notifying the parent monitor about the state change

http://git-wip-us.apache.org/repos/asf/stratos/blob/d830fab5/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 0221a05..d456a43 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
@@ -59,14 +59,14 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
         }
         try {
 
-            if (!ClusterStatus.Active.getNextStates().contains(getStatus())) {
+            //TODO to get status from correct instance if (!ClusterStatus.Active.getNextStates().contains(getStatus())) {
                 monitor();
-            } else {
+            /*} else {
                 if (log.isDebugEnabled()) {
                     log.debug("KubernetesServiceClusterMonitor is suspended as the cluster is in "
                             + getStatus() + "state");
                 }
-            }
+            }*/
         } catch (Exception e) {
             log.error("KubernetesServiceClusterMonitor: Monitor failed." + this.toString(),
                     e);

http://git-wip-us.apache.org/repos/asf/stratos/blob/d830fab5/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 9a4019c..745f104 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
@@ -184,7 +184,7 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
                 ClusterInstance instance = (ClusterInstance) this.instanceIdToInstanceMap.
                         get(instanceContext.getId());
                 if ((instance.getStatus().getCode() <= ClusterStatus.Active.getCode()) ||
-                        (getStatus() == ClusterStatus.Inactive && !hasStartupDependents) && !this.hasFaultyMember
+                        (instance.getStatus() == ClusterStatus.Inactive && !hasStartupDependents) && !this.hasFaultyMember
                                 && !stop) {
 
                     Runnable monitoringRunnable = new Runnable() {

http://git-wip-us.apache.org/repos/asf/stratos/blob/d830fab5/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index f0b43ec..ac271ba 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -630,5 +630,39 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
         this.isDestroyed = isDestroyed;
     }
 
+    public boolean verifyGroupStatus(String instanceId, GroupStatus requiredStatus) {
+        if(this.instanceIdToInstanceMap.containsKey(instanceId)) {
+            if(((GroupInstance)this.instanceIdToInstanceMap.get(instanceId)).getStatus() == requiredStatus) {
+                return true;
+            }
+        } else {
+            List<GroupInstance> instances = new ArrayList<GroupInstance>();
+            String networkPartitionId = null;
+            int noOfInstancesOfRequiredStatus = 0;
+            for(Instance instance : this.instanceIdToInstanceMap.values()) {
+                GroupInstance groupInstance = (GroupInstance)instance;
+                if(groupInstance.getParentId().equals(instanceId)) {
+                    instances.add(groupInstance);
+                    networkPartitionId = groupInstance.getNetworkPartitionId();
+                    if(groupInstance.getStatus() == requiredStatus) {
+                        noOfInstancesOfRequiredStatus ++;
+                    }
+                }
+            }
+            if(!instances.isEmpty()) {
+                int minInstances = this.networkPartitionCtxts.get(networkPartitionId).
+                                                getMinInstanceCount();
+                if(noOfInstancesOfRequiredStatus >= minInstances) {
+                    return true;
+                } else {
+                    if(requiredStatus == GroupStatus.Inactive && noOfInstancesOfRequiredStatus >= 1) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/d830fab5/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
index 721f291..217d0db 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ParentComponentMonitor.java
@@ -455,11 +455,10 @@ public abstract class ParentComponentMonitor extends Monitor {
                     GroupMonitor monitor1 = (GroupMonitor) monitor;
                     ApplicationHolder.acquireReadLock();
                     try {
-                        //TODO***********
-                        /*if (monitor1.getStatus() == GroupStatus.Active) {
+                        if (monitor1.verifyGroupStatus(instanceId, GroupStatus.Active)) {
                             parentsActive = true;
 
-                        }*/
+                        }
                     } finally {
                         ApplicationHolder.releaseReadLock();
                     }
@@ -468,7 +467,8 @@ public abstract class ParentComponentMonitor extends Monitor {
                     TopologyManager.acquireReadLockForCluster(monitor1.getServiceId(),
                             monitor1.getClusterId());
                     try {
-                        if (monitor1.getStatus() == ClusterStatus.Active) {
+                        if (((ClusterInstance)monitor1.getInstance(instanceId)).getStatus()
+                                                    == ClusterStatus.Active) {
                             parentsActive = true;
                         }
                     } finally {