adding lb reference property to Cluster monitor and setting its value globally 
in drools session


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

Branch: refs/heads/master
Commit: e50d5316c592a5fdcc55ce619db6b6ba003e61b7
Parents: 0003b1d
Author: Nirmal Fernando <[email protected]>
Authored: Sat Dec 14 19:35:17 2013 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Sat Dec 14 19:35:17 2013 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/ClusterMonitor.java      | 20 +++++++++++++-
 .../stratos/autoscaler/LbClusterMonitor.java    |  5 ++++
 .../stratos/autoscaler/PartitionContext.java    |  1 +
 .../autoscaler/rule/RuleTasksDelegator.java     | 28 +++++++++++---------
 .../stratos/autoscaler/util/AutoscalerUtil.java | 27 ++++++++++---------
 5 files changed, 55 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e50d5316/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
index 1ae757f..8a3d5bc 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterMonitor.java
@@ -60,6 +60,8 @@ public class ClusterMonitor implements Runnable{
     private FactHandle scaleCheckFactHandle;
 
     private AutoscalerRuleEvaluator autoscalerRuleEvaluator;
+    
+    private String lbReferenceType;
 
     public ClusterMonitor(String clusterId, String serviceId, DeploymentPolicy 
deploymentPolicy,
                           AutoscalePolicy autoscalePolicy) {
@@ -152,7 +154,8 @@ public class ClusterMonitor implements Runnable{
             for(PartitionContext partitionContext: 
networkPartitionContext.getPartitionCtxts().values()){
 
                 minCheckKnowledgeSession.setGlobal("clusterId", clusterId);
-
+                minCheckKnowledgeSession.setGlobal("lbRef", lbReferenceType);
+                
                 if (log.isDebugEnabled()) {
                     log.debug(String.format("Running minimum check for 
partition %s ", partitionContext.getPartitionId()));
                 }
@@ -219,6 +222,13 @@ public class ClusterMonitor implements Runnable{
         return autoscalePolicy;
     }
 
+    @Override
+    public String toString() {
+        return "ClusterMonitor [clusterId=" + clusterId + ", serviceId=" + 
serviceId +
+               ", deploymentPolicy=" + deploymentPolicy + ", autoscalePolicy=" 
+ autoscalePolicy +
+               ", lbReferenceType=" + lbReferenceType + "]";
+    }
+
     public void setAutoscalePolicy(AutoscalePolicy autoscalePolicy) {
         this.autoscalePolicy = autoscalePolicy;
     }
@@ -230,4 +240,12 @@ public class ClusterMonitor implements Runnable{
        public boolean memberExist(String memberId){
                return this.memberPartitionMap.containsKey(memberId);
        }
+
+    public String getLbReferenceType() {
+        return lbReferenceType;
+    }
+
+    public void setLbReferenceType(String lbReferenceType) {
+        this.lbReferenceType = lbReferenceType;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e50d5316/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/LbClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/LbClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/LbClusterMonitor.java
index 131dfe6..8a4f3e5 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/LbClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/LbClusterMonitor.java
@@ -218,4 +218,9 @@ public class LbClusterMonitor implements Runnable{
        public boolean memberExist(String memberId){
                return this.memberPartitionMap.containsKey(memberId);
        }
+
+    @Override
+    public String toString() {
+        return "LbClusterMonitor [clusterId=" + clusterId + ", serviceId=" + 
serviceId + "]";
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e50d5316/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
index 2843e16..a4c1b68 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
@@ -72,6 +72,7 @@ public class PartitionContext implements Serializable{
     
     public PartitionContext(Partition partition) {
         this.setPartition(partition);
+        this.minimumMemberCount = partition.getPartitionMin();
         this.partitionId = partition.getId();
         this.pendingMembers = new ArrayList<MemberContext>();
         this.activeMembers = new ArrayList<MemberContext>();

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e50d5316/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 906e002..4e9f1c9 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
@@ -44,7 +44,7 @@ public class RuleTasksDelegator {
         return autoscaleAlgorithm;
     }
 
-    public void delegateSpawn(PartitionContext partitionContext, String 
clusterId) {
+    public void delegateSpawn(PartitionContext partitionContext, String 
clusterId, String lbRefType) {
         try {
 
             String nwPartitionId = partitionContext.getNetworkPartitionId();
@@ -52,7 +52,8 @@ public class RuleTasksDelegator {
                                           PartitionManager.getInstance()
                                                           
.getNetworkPartition(nwPartitionId);
 
-            String lbClusterId = getLbClusterId(partitionContext, ctxt);
+            
+            String lbClusterId = getLbClusterId(lbRefType, partitionContext, 
ctxt);
 
             MemberContext memberContext =
                                          CloudControllerClient.getInstance()
@@ -72,18 +73,21 @@ public class RuleTasksDelegator {
 
 
 
-    public static String getLbClusterId(PartitionContext partitionContext, 
NetworkPartitionContext ctxt) {
-       Properties props = partitionContext.getProperties();
-       String value =
-                      (String) 
props.get(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF);
+    public static String getLbClusterId(String lbRefType, PartitionContext 
partitionCtxt, 
+        NetworkPartitionContext nwPartitionCtxt) {
+       
        String lbClusterId = null;
 
-       if 
(value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER))
 {
-           lbClusterId = ctxt.getDefaultLbClusterId();
-       } else if 
(value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER))
 {
-           String serviceName = partitionContext.getServiceName();
-           lbClusterId = ctxt.getLBClusterIdOfService(serviceName);
-       }
+        if (lbRefType != null) {
+            if 
(lbRefType.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER))
 {
+                lbClusterId = nwPartitionCtxt.getDefaultLbClusterId();
+            } else if 
(lbRefType.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER))
 {
+                String serviceName = partitionCtxt.getServiceName();
+                lbClusterId = 
nwPartitionCtxt.getLBClusterIdOfService(serviceName);
+            } else {
+                log.warn("Invalid LB reference type defined: [value] 
"+lbRefType);
+            }
+        }
        return lbClusterId;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e50d5316/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index a171d4c..4bfa271 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -110,6 +110,7 @@ public class AutoscalerUtil {
                                         new 
ClusterMonitor(cluster.getClusterId(),
                                                            
cluster.getServiceName(),
                                                            deploymentPolicy, 
policy);
+        
         for (PartitionGroup partitionGroup: 
deploymentPolicy.getPartitionGroups()){
 
             NetworkPartitionContext networkPartitionContext = new 
NetworkPartitionContext(partitionGroup.getId());
@@ -145,20 +146,20 @@ public class AutoscalerUtil {
 
             clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext);
         }
-//        if (policy != null) {
-//
-//            // get values from policy
-//            LoadThresholds loadThresholds = policy.getLoadThresholds();
-//            float averageLimit = 
loadThresholds.getRequestsInFlight().getAverage();
-//            float gradientLimit = 
loadThresholds.getRequestsInFlight().getGradient();
-//            float secondDerivativeLimit = 
loadThresholds.getRequestsInFlight().getSecondDerivative();
-//
-//            
clusterMonitor.setRequestsInFlightGradientThreshold(gradientLimit);
-//            
clusterMonitor.setRequestsInFlightSecondDerivativeThreshold(secondDerivativeLimit);
-//            clusterMonitor.setAverageRequestsInFlightThreshold(averageLimit);
-//
-//        }
+        
+        
+        // find lb reference type
+        java.util.Properties props = cluster.getProperties();
+        
+        if(props.containsKey(Constants.LOAD_BALANCER_REF)) {
+            String value = props.getProperty(Constants.LOAD_BALANCER_REF);
+            clusterMonitor.setLbReferenceType(value);
+            if(log.isDebugEnabled()) {
+                log.debug("Set the lb reference type: "+value);
+            }
+        }
 
+        log.info("Cluster monitor created: "+clusterMonitor.toString());
         return clusterMonitor;
     }
     

Reply via email to