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/01 17:51:43 UTC

[3/3] stratos git commit: adding applicatin id to dep policy and changing app creation after deploying deployment policy

adding applicatin id to dep policy and changing app creation after deploying deployment policy


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

Branch: refs/heads/master
Commit: f6c912b0ef14d4991012f143c991ab5377e97679
Parents: 600dceb
Author: reka <rt...@gmail.com>
Authored: Mon Dec 1 18:13:29 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon Dec 1 22:21:27 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |  5 +-
 .../AutoscalerTopologyEventReceiver.java        | 71 ----------------
 .../pojo/policy/deployment/ChildPolicy.java     |  2 +-
 .../policy/deployment/DeploymentPolicy.java     |  9 +++
 .../stratos/autoscaler/util/AutoscalerUtil.java | 85 ++++++++++++++++++++
 5 files changed, 99 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f6c912b0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 84705f8..739ae9d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -109,7 +109,10 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
 
     @Override
     public boolean addDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws InvalidPolicyException {
-        return PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy);
+        boolean hasDeployed = PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy);
+        //Need to start the application Monitor after validation of the deployment policies.
+
+        return hasDeployed;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/stratos/blob/f6c912b0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index f41466b..73bd6db 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -513,77 +513,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
         terminated = true;
     }
 
-    protected synchronized void startApplicationMonitor(String applicationId) {
-        Thread th = null;
-        if (AutoscalerContext.getInstance().getAppMonitor(applicationId) == null) {
-            th = new Thread(new ApplicationMonitorAdder(applicationId));
-        }
-        if (th != null) {
-            th.start();
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug(String
-                        .format("Application monitor thread already exists: " +
-                                "[application] %s ", applicationId));
-            }
-        }
-    }
-
-    private class ApplicationMonitorAdder implements Runnable {
-        private String appId;
-
-        public ApplicationMonitorAdder(String appId) {
-            this.appId = appId;
-        }
-
-        public void run() {
-            ApplicationMonitor applicationMonitor = null;
-            int retries = 5;
-            boolean success = false;
-            do {
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e1) {
-                }
-                try {
-                    long start = System.currentTimeMillis();
-                    if (log.isDebugEnabled()) {
-                        log.debug("application monitor is going to be started for [application] " +
-                                appId);
-                    }
-                    try {
-                        applicationMonitor = MonitorFactory.getApplicationMonitor(appId);
-                    } catch (PolicyValidationException e) {
-                        String msg = "Application monitor creation failed for Application: ";
-                        log.warn(msg, e);
-                        retries--;
-                    }
-                    long end = System.currentTimeMillis();
-                    log.info("Time taken to start app monitor: " + (end - start) / 1000);
-                    success = true;
-                } catch (DependencyBuilderException e) {
-                    String msg = "Application monitor creation failed for Application: ";
-                    log.warn(msg, e);
-                    retries--;
-                } catch (TopologyInConsistentException e) {
-                    String msg = "Application monitor creation failed for Application: ";
-                    log.warn(msg, e);
-                    retries--;
-                }
-            } while (!success && retries != 0);
 
-            if (applicationMonitor == null) {
-                String msg = "Application monitor creation failed, even after retrying for 5 times, "
-                        + "for Application: " + appId;
-                log.error(msg);
-                throw new RuntimeException(msg);
-            }
 
-            AutoscalerContext.getInstance().addAppMonitor(applicationMonitor);
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Application monitor has been added successfully: " +
-                        "[application] %s", applicationMonitor.getId()));
-            }
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/f6c912b0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
index 04f7d9f..1f4a8b4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
@@ -21,7 +21,7 @@ package org.apache.stratos.autoscaler.pojo.policy.deployment;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelNetworkPartition;
 
 /**
- * Created by reka on 12/1/14.
+ * This will keep the Children's policy in an application
  */
 public class ChildPolicy {
     private String id;

http://git-wip-us.apache.org/repos/asf/stratos/blob/f6c912b0/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/DeploymentPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/DeploymentPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/DeploymentPolicy.java
index 378c40b..ef3eacd 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/DeploymentPolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/DeploymentPolicy.java
@@ -36,6 +36,7 @@ public class DeploymentPolicy implements Serializable{
 
     private static final long serialVersionUID = 5675507196284400099L;
     private String id;
+    private String applicationId;
     private String description;
     private boolean isPublic;
     private ApplicationLevelNetworkPartition[] applicationLevelNetworkPartitions;
@@ -222,4 +223,12 @@ public class DeploymentPolicy implements Serializable{
             this.childPolicies = Arrays.copyOf(childPolicies, childPolicies.length);
         }
     }
+
+    public String getApplicationId() {
+        return applicationId;
+    }
+
+    public void setApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/f6c912b0/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 5b80264..077a1a4 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
@@ -27,6 +27,12 @@ import javax.xml.namespace.QName;
 import org.apache.axiom.om.OMElement;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
+import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
+import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
+import org.apache.stratos.autoscaler.monitor.MonitorFactory;
+import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.common.Properties;
 import org.apache.stratos.common.Property;
@@ -78,6 +84,10 @@ public class AutoscalerUtil {
         RegistryManager.getInstance().removeApplication(applicationId);
     }
 
+    public static String getAliasFromClusterId(String clusterId) {
+        return clusterId.substring(0, clusterId.indexOf("."));
+    }
+
     /*public static LbClusterMonitor getLBClusterMonitor(Cluster cluster) throws PolicyValidationException, PartitionValidationException {
         // FIXME fix the following code to correctly update
         // AutoscalerContext context = AutoscalerContext.getInstance();
@@ -287,6 +297,81 @@ public class AutoscalerUtil {
         return toCommonProperties(properties);
     }
 
+    protected synchronized void startApplicationMonitor(String applicationId) {
+        Thread th = null;
+        if (AutoscalerContext.getInstance().getAppMonitor(applicationId) == null) {
+            th = new Thread(new ApplicationMonitorAdder(applicationId));
+        }
+        if (th != null) {
+            th.start();
+        } else {
+            if (log.isDebugEnabled()) {
+                log.debug(String
+                        .format("Application monitor thread already exists: " +
+                                "[application] %s ", applicationId));
+            }
+        }
+    }
+
+    private class ApplicationMonitorAdder implements Runnable {
+        private String appId;
+
+        public ApplicationMonitorAdder(String appId) {
+            this.appId = appId;
+        }
+
+        public void run() {
+            ApplicationMonitor applicationMonitor = null;
+            int retries = 5;
+            boolean success = false;
+            do {
+                try {
+                    Thread.sleep(5000);
+                } catch (InterruptedException e1) {
+                }
+                try {
+                    long start = System.currentTimeMillis();
+                    if (log.isDebugEnabled()) {
+                        log.debug("application monitor is going to be started for [application] " +
+                                appId);
+                    }
+                    try {
+                        applicationMonitor = MonitorFactory.getApplicationMonitor(appId);
+                    } catch (PolicyValidationException e) {
+                        String msg = "Application monitor creation failed for Application: ";
+                        log.warn(msg, e);
+                        retries--;
+                    }
+                    long end = System.currentTimeMillis();
+                    log.info("Time taken to start app monitor: " + (end - start) / 1000);
+                    success = true;
+                } catch (DependencyBuilderException e) {
+                    String msg = "Application monitor creation failed for Application: ";
+                    log.warn(msg, e);
+                    retries--;
+                } catch (TopologyInConsistentException e) {
+                    String msg = "Application monitor creation failed for Application: ";
+                    log.warn(msg, e);
+                    retries--;
+                }
+            } while (!success && retries != 0);
+
+            if (applicationMonitor == null) {
+                String msg = "Application monitor creation failed, even after retrying for 5 times, "
+                        + "for Application: " + appId;
+                log.error(msg);
+                throw new RuntimeException(msg);
+            }
+
+            AutoscalerContext.getInstance().addAppMonitor(applicationMonitor);
+            if (log.isInfoEnabled()) {
+                log.info(String.format("Application monitor has been added successfully: " +
+                        "[application] %s", applicationMonitor.getId()));
+            }
+        }
+    }
+
+
 //    public static LbClusterMonitor getLbClusterMonitor(Cluster cluster) throws PolicyValidationException, PartitionValidationException {
 //        if (null == cluster) {
 //               return null;