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

Reply via email to