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 <[email protected]> Authored: Mon Dec 1 18:13:29 2014 +0530 Committer: reka <[email protected]> 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;
