Adding logic to parse application definition once and reuse it in application deployment
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/15cbd21b Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/15cbd21b Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/15cbd21b Branch: refs/heads/master Commit: 15cbd21be322615f6452020bfbd19c50941de837 Parents: fbd4416 Author: Imesh Gunaratne <[email protected]> Authored: Thu Jan 29 19:15:15 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Thu Jan 29 19:16:31 2015 +0530 ---------------------------------------------------------------------- .../applications/pojo/ComponentContext.java | 10 ++++++++++ .../services/impl/AutoscalerServiceImpl.java | 19 +++++++++++++------ samples/applications/complex-app/README.md | 2 +- 3 files changed, 24 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/15cbd21b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java index 8d42c89..b8faedb 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ComponentContext.java @@ -20,6 +20,7 @@ package org.apache.stratos.autoscaler.applications.pojo; import java.io.Serializable; +import java.util.Set; public class ComponentContext implements Serializable { @@ -28,6 +29,7 @@ public class ComponentContext implements Serializable { private GroupContext[] groupContexts; private CartridgeContext[] cartridgeContexts; private DependencyContext dependencyContext; + private Set<ApplicationClusterContext> applicationClusterContexts; public GroupContext[] getGroupContexts() { return groupContexts; @@ -52,4 +54,12 @@ public class ComponentContext implements Serializable { public void setDependencyContext(DependencyContext dependencyContext) { this.dependencyContext = dependencyContext; } + + public void setApplicationClusterContexts(Set<ApplicationClusterContext> applicationClusterContexts) { + this.applicationClusterContexts = applicationClusterContexts; + } + + public Set<ApplicationClusterContext> getApplicationClusterContexts() { + return applicationClusterContexts; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/15cbd21b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java index 98f4807..d38e244 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java @@ -198,7 +198,12 @@ public class AutoscalerServiceImpl implements AutoscalerService { } ApplicationParser applicationParser = new DefaultApplicationParser(); - applicationParser.parse(applicationContext); + Application application = applicationParser.parse(applicationContext); + RegistryManager.getInstance().persistApplication(application); + + Set<ApplicationClusterContext> applicationClusterContexts = applicationParser.getApplicationClusterContexts(); + applicationContext.getComponents().setApplicationClusterContexts(applicationClusterContexts); + applicationContext.setStatus(ApplicationContext.STATUS_CREATED); AutoscalerContext.getInstance().addApplicationContext(applicationContext); if(log.isInfoEnabled()) { @@ -221,16 +226,18 @@ public class AutoscalerServiceImpl implements AutoscalerService { @Override public boolean deployApplication(String applicationId, DeploymentPolicy deploymentPolicy) throws ApplicationDefinitionException { try { - ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContext(applicationId); - if (applicationContext == null) { + Application application = RegistryManager.getInstance().getApplication(applicationId); + if (application == null) { throw new RuntimeException("Application not found: " + applicationId); } - ApplicationParser applicationParser = new DefaultApplicationParser(); - Application application = applicationParser.parse(applicationContext); + ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContext(applicationId); + if (applicationContext == null) { + throw new RuntimeException("Application context not found: " + applicationId); + } // Create application clusters in cloud controller and send application created event - ApplicationBuilder.handleApplicationCreatedEvent(application, applicationParser.getApplicationClusterContexts()); + ApplicationBuilder.handleApplicationCreatedEvent(application, applicationContext.getComponents().getApplicationClusterContexts()); try { // Update kubernetes cluster ids http://git-wip-us.apache.org/repos/asf/stratos/blob/15cbd21b/samples/applications/complex-app/README.md ---------------------------------------------------------------------- diff --git a/samples/applications/complex-app/README.md b/samples/applications/complex-app/README.md index e6de773..f48f6d4 100644 --- a/samples/applications/complex-app/README.md +++ b/samples/applications/complex-app/README.md @@ -1,4 +1,4 @@ Complex App =========== -TODO: Add an description about the application +TODO: Add a description about the application
