You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2014/12/15 05:12:30 UTC

[1/3] stratos git commit: Adding ScalingOverMaxEvent

Repository: stratos
Updated Branches:
  refs/heads/4.1.0-test 8dc8806b4 -> 7698f29de


Adding ScalingOverMaxEvent


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

Branch: refs/heads/4.1.0-test
Commit: 7c6b466cfe6184c49cdb1eb71f47ad5f7448b2d6
Parents: 8dc8806
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 15 09:26:45 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 15 09:26:45 2014 +0530

----------------------------------------------------------------------
 .../monitor/events/ScalingOverMaxEvent.java     | 56 ++++++++++++++++++++
 1 file changed, 56 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/7c6b466c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
new file mode 100644
index 0000000..d54cbb5
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.autoscaler.monitor.events;
+
+/**
+ * This is to handle scaling of the monitors
+ */
+public class ScalingOverMaxEvent extends MonitorEvent {
+
+    private float factor;
+    private String networkPartitionId;
+    private String serviceName;
+
+    public ScalingOverMaxEvent(String id, String networkPartitionId, String instanceId, float factor, String serviceName) {
+        super(id, instanceId);
+        this.factor = factor;
+        this.networkPartitionId = networkPartitionId;
+        this.serviceName = serviceName;
+    }
+
+    public float getFactor() {
+        return factor;
+    }
+
+    public void setFactor(float factor) {
+        this.factor = factor;
+    }
+
+    public String getNetworkPartitionId() {
+        return networkPartitionId;
+    }
+
+    public void setNetworkPartitionId(String networkPartitionId) {
+        this.networkPartitionId = networkPartitionId;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+}


[3/3] stratos git commit: Adding scaling notification when max is hit while scaling up

Posted by la...@apache.org.
Adding scaling notification when max is hit while scaling up


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

Branch: refs/heads/4.1.0-test
Commit: 7698f29dec98b52457c16e51e17a32aecca2e8ab
Parents: a33869f
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 15 09:44:35 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 15 09:44:35 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/monitor/cluster/VMClusterMonitor.java    |  5 +++--
 .../autoscaler/monitor/events/ScalingOverMaxEvent.java  | 12 +-----------
 .../events/builder/MonitorStatusEventBuilder.java       |  4 ++--
 .../stratos/autoscaler/rule/RuleTasksDelegator.java     |  6 ++----
 .../distribution/src/main/conf/drools/scaling.drl       |  6 +++++-
 5 files changed, 13 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/7698f29d/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 7401a3b..66a4837 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
@@ -453,9 +453,10 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
         MonitorStatusEventBuilder.handleClusterScalingEvent(this.parent, networkPartitionId, instanceId, factor, this.id, serviceType);
     }
 
-    public void sendScalingOverMaxEvent(String networkPartitionId, String instanceId, float factor) {
+    public void sendScalingOverMaxEvent(String networkPartitionId, String instanceId) {
 
-        MonitorStatusEventBuilder.handleScalingOverMaxEvent(this.parent, networkPartitionId, instanceId, factor, this.id, serviceType);
+        MonitorStatusEventBuilder.handleScalingOverMaxEvent(this.parent, networkPartitionId, instanceId,
+                this.id, serviceType);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/stratos/blob/7698f29d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
index d54cbb5..dc5409d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ScalingOverMaxEvent.java
@@ -23,25 +23,15 @@ package org.apache.stratos.autoscaler.monitor.events;
  */
 public class ScalingOverMaxEvent extends MonitorEvent {
 
-    private float factor;
     private String networkPartitionId;
     private String serviceName;
 
-    public ScalingOverMaxEvent(String id, String networkPartitionId, String instanceId, float factor, String serviceName) {
+    public ScalingOverMaxEvent(String id, String networkPartitionId, String instanceId, String serviceName) {
         super(id, instanceId);
-        this.factor = factor;
         this.networkPartitionId = networkPartitionId;
         this.serviceName = serviceName;
     }
 
-    public float getFactor() {
-        return factor;
-    }
-
-    public void setFactor(float factor) {
-        this.factor = factor;
-    }
-
     public String getNetworkPartitionId() {
         return networkPartitionId;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/7698f29d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
index 913f71e..9915ae4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
@@ -63,11 +63,11 @@ public class MonitorStatusEventBuilder {
     }
 
     public static void handleScalingOverMaxEvent(ParentComponentMonitor parent,
-                                                 String networkPartitionId, String instanceId, float factor,
+                                                 String networkPartitionId, String instanceId,
                                                  String appId, String serviceName) {
 
         //Send notifications to parent of the cluster monitor
-        ScalingOverMaxEvent scalingOverMaxEvent = new ScalingOverMaxEvent(appId, networkPartitionId, instanceId, factor,
+        ScalingOverMaxEvent scalingOverMaxEvent = new ScalingOverMaxEvent(appId, networkPartitionId, instanceId,
                 serviceName) ;
         notifyParent(parent, scalingOverMaxEvent);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/7698f29d/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 02ab5f3..4a8ec87 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
@@ -324,19 +324,17 @@ public class RuleTasksDelegator {
 
     }
 
-    public void delegateScalingOverMaxNotification(String clusterId, String networkPartitionId, String instanceId,
-                                                      int requiredInstanceCount, int minimumInstanceCount) {
+    public void delegateScalingOverMaxNotification(String clusterId, String networkPartitionId, String instanceId) {
 
         if(log.isDebugEnabled()) {
             log.debug("Scaling dependent notification..");
         }
         //Notify parent for checking scaling dependencies
         AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
-        float factor = requiredInstanceCount / minimumInstanceCount;
         if (clusterMonitor instanceof VMClusterMonitor) {
 
             VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) clusterMonitor;
-            vmClusterMonitor.sendClusterScalingEvent(networkPartitionId, instanceId, factor);
+            vmClusterMonitor.sendScalingOverMaxEvent(networkPartitionId, instanceId);
         }
 
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/7698f29d/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
index 96783dc..f03e830 100644
--- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
@@ -150,7 +150,11 @@ dialect "mvel"
                     }
                 }
             } else{
-                log.info("[scale-up] Max is reached, hence not scaling up [cluster] " + clusterId + " [instance id]" + clusterInstanceContext.getId() + " [max] " + clusterInstanceContext.getMaxInstanceCount());
+                log.info("[scale-up] Max is reached, hence not scaling up cluster monitor itself. [cluster] " + clusterId + " [instance id]" + clusterInstanceContext.getId() + " [max] " + clusterInstanceContext.getMaxInstanceCount());
+                if(clusterInstanceContext.isInGroupScalingEnabledSubtree()){
+
+                    delegator.delegateScalingOverMaxNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(), clusterInstanceContext.getId());
+                }
             }
         } else if(scaleDown){
 


[2/3] stratos git commit: Adding ScalingOverMaxEvent notification flow

Posted by la...@apache.org.
Adding ScalingOverMaxEvent notification flow


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

Branch: refs/heads/4.1.0-test
Commit: a33869fd759485c2103cc877927bce7184177c5c
Parents: 7c6b466
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 15 09:27:39 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 15 09:27:39 2014 +0530

----------------------------------------------------------------------
 .../context/cluster/ClusterInstanceContext.java |  2 +-
 .../autoscaler/monitor/EventHandler.java        |  8 +++++++
 .../monitor/cluster/VMClusterMonitor.java       | 11 ++++++++++
 .../monitor/component/ApplicationMonitor.java   |  6 +++++
 .../monitor/component/GroupMonitor.java         |  6 +++++
 .../builder/MonitorStatusEventBuilder.java      | 14 ++++++++++++
 .../autoscaler/rule/RuleTasksDelegator.java     | 23 +++++++++++++++++---
 7 files changed, 66 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/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 0f62e64..86ed605 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
@@ -474,7 +474,7 @@ public class ClusterInstanceContext extends InstanceContext {
         return clusterId;
     }
 
-    public boolean isGroupScalingEnabledSubtree() {
+    public boolean isInGroupScalingEnabledSubtree() {
         return groupScalingEnabledSubtree;
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
index 866a8f7..7805a13 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/EventHandler.java
@@ -21,6 +21,7 @@ package org.apache.stratos.autoscaler.monitor;
 import org.apache.stratos.autoscaler.exception.application.MonitorNotFoundException;
 import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
+import org.apache.stratos.autoscaler.monitor.events.ScalingOverMaxEvent;
 
 /**
  * Event Handler to notify the observer/to receive notification
@@ -49,6 +50,13 @@ public interface EventHandler {
     public abstract void onChildScalingEvent(ScalingEvent scalingEvent);
 
     /**
+     * Triggered when a scaling over max event is received from a child.
+     *
+     * @param scalingOverMaxEvent
+     */
+    public abstract void onChildScalingOverMaxEvent(ScalingOverMaxEvent scalingOverMaxEvent);
+
+    /**
      * Triggered when a scaling event is received from the parent.
      *
      * @param scalingEvent

http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/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 71009d3..7401a3b 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
@@ -36,6 +36,7 @@ import org.apache.stratos.autoscaler.exception.partition.PartitionValidationExce
 import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
 import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
+import org.apache.stratos.autoscaler.monitor.events.ScalingOverMaxEvent;
 import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.status.processor.cluster.ClusterStatusActiveProcessor;
@@ -389,6 +390,11 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
     }
 
     @Override
+    public void onChildScalingOverMaxEvent(ScalingOverMaxEvent scalingOverMaxEvent) {
+
+    }
+
+    @Override
     public void onParentScalingEvent(ScalingEvent scalingEvent) {
 
         if (log.isDebugEnabled()) {
@@ -447,6 +453,11 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
         MonitorStatusEventBuilder.handleClusterScalingEvent(this.parent, networkPartitionId, instanceId, factor, this.id, serviceType);
     }
 
+    public void sendScalingOverMaxEvent(String networkPartitionId, String instanceId, float factor) {
+
+        MonitorStatusEventBuilder.handleScalingOverMaxEvent(this.parent, networkPartitionId, instanceId, factor, this.id, serviceType);
+    }
+
     @Override
     public void handleGradientOfLoadAverageEvent(
             GradientOfLoadAverageEvent gradientOfLoadAverageEvent) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/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 9573a95..107adff 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
@@ -33,6 +33,7 @@ import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.ApplicationStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
+import org.apache.stratos.autoscaler.monitor.events.ScalingOverMaxEvent;
 import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
@@ -220,6 +221,11 @@ public class ApplicationMonitor extends ParentComponentMonitor {
     }
 
     @Override
+    public void onChildScalingOverMaxEvent(ScalingOverMaxEvent scalingOverMaxEvent) {
+
+    }
+
+    @Override
     public void onParentScalingEvent(ScalingEvent scalingEvent) {
 
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/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 a73fce3..7c02da2 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
@@ -35,6 +35,7 @@ import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.ScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
+import org.apache.stratos.autoscaler.monitor.events.ScalingOverMaxEvent;
 import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.ChildPolicy;
@@ -290,6 +291,11 @@ public class GroupMonitor extends ParentComponentMonitor implements Runnable {
     }
 
     @Override
+    public void onChildScalingOverMaxEvent(ScalingOverMaxEvent scalingOverMaxEvent) {
+
+    }
+
+    @Override
     public void onParentScalingEvent(ScalingEvent scalingEvent) {
 
         //Notify all children about scaling

http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
index 9db0162..913f71e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/builder/MonitorStatusEventBuilder.java
@@ -62,6 +62,16 @@ public class MonitorStatusEventBuilder {
         notifyParent(parent, scalingEvent);
     }
 
+    public static void handleScalingOverMaxEvent(ParentComponentMonitor parent,
+                                                 String networkPartitionId, String instanceId, float factor,
+                                                 String appId, String serviceName) {
+
+        //Send notifications to parent of the cluster monitor
+        ScalingOverMaxEvent scalingOverMaxEvent = new ScalingOverMaxEvent(appId, networkPartitionId, instanceId, factor,
+                serviceName) ;
+        notifyParent(parent, scalingOverMaxEvent);
+    }
+
     private static void notifyParent(ParentComponentMonitor parent, MonitorStatusEvent statusEvent) {
         parent.onChildStatusEvent(statusEvent);
     }
@@ -100,6 +110,10 @@ public class MonitorStatusEventBuilder {
         parent.onChildScalingEvent(scalingEvent);
     }
 
+    private static void notifyParent(ParentComponentMonitor parent, ScalingOverMaxEvent scalingOverMaxEvent) {
+        parent.onChildScalingOverMaxEvent(scalingOverMaxEvent);
+    }
+
     public static void notifyChildren (ParentComponentMonitor componentMonitor, ScalingEvent scalingEvent) {
         for (Monitor activeChildMonitor : componentMonitor.getAliasToActiveMonitorsMap().values()) {
             activeChildMonitor.onParentScalingEvent(scalingEvent);

http://git-wip-us.apache.org/repos/asf/stratos/blob/a33869fd/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 415bf11..02ab5f3 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
@@ -310,9 +310,26 @@ public class RuleTasksDelegator {
     public void delegateScalingDependencyNotification(String clusterId, String networkPartitionId, String instanceId,
                                                       int requiredInstanceCount, int minimumInstanceCount) {
 
-    	if(log.isDebugEnabled()) {
-    		log.debug("Scaling dependent notification..");
-    	}
+        if(log.isDebugEnabled()) {
+            log.debug("Scaling dependent notification..");
+        }
+        //Notify parent for checking scaling dependencies
+        AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
+        float factor = requiredInstanceCount / minimumInstanceCount;
+        if (clusterMonitor instanceof VMClusterMonitor) {
+
+            VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) clusterMonitor;
+            vmClusterMonitor.sendClusterScalingEvent(networkPartitionId, instanceId, factor);
+        }
+
+    }
+
+    public void delegateScalingOverMaxNotification(String clusterId, String networkPartitionId, String instanceId,
+                                                      int requiredInstanceCount, int minimumInstanceCount) {
+
+        if(log.isDebugEnabled()) {
+            log.debug("Scaling dependent notification..");
+        }
         //Notify parent for checking scaling dependencies
         AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
         float factor = requiredInstanceCount / minimumInstanceCount;