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;