You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/07/11 17:46:23 UTC

[3/3] git commit: persist CompositeApplication

persist CompositeApplication


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

Branch: refs/heads/grouping
Commit: 308f6d34fd22c4e02c3f7c6b7f8476f005385503
Parents: fad15e2
Author: Udara Liyanage <ud...@wso2.com>
Authored: Fri Jul 11 21:15:28 2014 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Fri Jul 11 21:15:28 2014 +0530

----------------------------------------------------------------------
 .../CompositeApplicationManager.java            |  5 +-
 .../application/beans/CartridgeDefinition.java  |  8 ++++
 .../application/beans/ComponentDefinition.java  |  3 --
 .../manager/persistence/PersistenceManager.java |  2 +
 .../RegistryBasedPersistenceManager.java        | 50 +++++++++++++++++++-
 .../DataInsertionAndRetrievalManager.java       | 34 ++++++++++++-
 .../stratos/manager/utils/Serializer.java       | 22 +++++++++
 .../rest/endpoint/services/ServiceUtils.java    |  4 +-
 8 files changed, 121 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
index c905320..2a02646 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
@@ -19,7 +19,7 @@ public class CompositeApplicationManager {
 	
 	private static Log log = LogFactory.getLog(CompositeApplicationManager.class);
 	
-	public void deployCompositeApplication (CompositeAppDefinition compositeAppDefinition) throws CompositeApplicationDefinitionException {
+	public void deployCompositeApplication (CompositeAppDefinition compositeAppDefinition) throws CompositeApplicationDefinitionException, PersistenceManagerException {
 //		if (log.isDebugEnabled()) {
 //			log.debug("deploying composite application " + configCompositeApplication.getAlias());
 //		}
@@ -34,6 +34,9 @@ public class CompositeApplicationManager {
 
         CompositeApplicationParser compositeAppParser = new DefaultCompositeApplicationParser();
         compositeAppParser.parse(compositeAppDefinition);
+        
+        DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
+        mgr.persistCompositeApplication(compositeAppDefinition);
 
         // TODO: traverse the data structure and create the subscriptions
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
index 7788dc6..bb19145 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
@@ -66,4 +66,12 @@ public class CartridgeDefinition {
     public void setUsername(String username) {
         this.username = username;
     }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
index 6a2ab2b..55be3fe 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
@@ -2,9 +2,6 @@ package org.apache.stratos.manager.composite.application.beans;
 
 import java.util.List;
 
-/**
- * Created by udara on 7/11/14.
- */
 public class ComponentDefinition {
     private String group;
     private String alias;

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
index 65b31c4..c0203eb 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
@@ -19,6 +19,7 @@
 
 package org.apache.stratos.manager.persistence;
 
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
 import org.apache.stratos.manager.deploy.service.Service;
 import org.apache.stratos.manager.exception.PersistenceManagerException;
 import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -57,6 +58,7 @@ public abstract class PersistenceManager {
     
     //Grouping
     public abstract void persistDeployedCompositeApplication(ConfigCompositeApplication configCompositeApplication)  throws PersistenceManagerException;
+    public abstract void persistCompositeApplication(CompositeAppDefinition compositeApplication)  throws PersistenceManagerException;
 
     //Grouping
     public abstract void removeDeployedCompositeApplication(String configCompositeApplicationAlias)  throws PersistenceManagerException;

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
index 50bd56b..2ef2680 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
@@ -21,6 +21,7 @@ package org.apache.stratos.manager.persistence;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
 import org.apache.stratos.manager.deploy.service.Service;
 import org.apache.stratos.manager.exception.PersistenceManagerException;
 import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -249,7 +250,33 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
         	persistCompApplication(configCompositeAapplication);
         }
     }
-    
+
+    public void persistCompositeApplication (CompositeAppDefinition configCompositeApplication)
+            throws PersistenceManagerException {
+
+        if (log.isDebugEnabled()) {
+            log.debug(String.format("trying to persist ConfigCompositeApplication [ %s ]", configCompositeApplication.getAlias()));
+        }
+        int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+        if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+            // TODO: This is only a workaround. Proper fix is to write to tenant registry
+            try {
+                PrivilegedCarbonContext.startTenantFlow();
+                PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+                carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+                carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+                persistCompApplication(configCompositeApplication);
+
+            } finally {
+                PrivilegedCarbonContext.endTenantFlow();
+            }
+
+        } else {
+            persistCompApplication(configCompositeApplication);
+        }
+    }
+
     // Grouping
     private void persistCompApplication (ConfigCompositeApplication configCompositeAapplication) throws PersistenceManagerException  {
 
@@ -270,6 +297,27 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
             throw new PersistenceManagerException(e);
         }
     }
+
+    // Grouping
+    private void persistCompApplication (CompositeAppDefinition configCompositeAapplication) throws PersistenceManagerException  {
+
+        // persist Service
+        try {
+            //RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + COMPOSITE_APPLICATION + "/" + configCompositeAapplication.getAlias(),
+            RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + COMPOSITE_APPLICATION + "/" + "compositeApplicationAlias",
+                    Serializer.serializeServiceToByteArray(configCompositeAapplication), null);
+
+            if (log.isDebugEnabled()) {
+                log.debug("Persisted ConfigCompositeApplication successfully: hardcoded [ " + configCompositeAapplication.getAlias() + " ]");
+            }
+
+        } catch (RegistryException e) {
+            throw new PersistenceManagerException(e);
+
+        } catch (IOException e) {
+            throw new PersistenceManagerException(e);
+        }
+    }
     
     public void removeDeployedCompositeApplication(String configCompositeApplicationAlias)  throws PersistenceManagerException {
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
index 4dd61fb..4f88f2c 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
@@ -21,6 +21,7 @@ package org.apache.stratos.manager.retriever;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
 import org.apache.stratos.manager.deploy.service.Service;
 import org.apache.stratos.manager.exception.PersistenceManagerException;
 import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -369,7 +370,38 @@ public class DataInsertionAndRetrievalManager {
             //LookupDataHolder.getInstance().releaseWriteLock();
         }
     }
-    
+
+    public void persistCompositeApplication (CompositeAppDefinition compositeApplication) throws PersistenceManagerException {
+
+        // get the write lock
+        //LookupDataHolder.getInstance().acquireWriteLock();
+
+        try {
+            // store in LookupDataHolder
+            //ToDo ... add to data holder
+            // LookupDataHolder.getInstance().putSubscription(cartridgeSubscription);
+
+            try {
+                // store in Persistence Manager
+                persistenceManager.persistCompositeApplication(compositeApplication);
+
+            } catch (PersistenceManagerException e) {
+                String errorMsg = "Error in persisting CartridgeSubscription in Persistence Manager";
+                log.error(errorMsg, e);
+                // remove from the in memory model since persisting failed
+                /* TODO
+                LookupDataHolder.getInstance().removeSubscription(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getType(),
+                        cartridgeSubscription.getAlias(), cartridgeSubscription.getClusterDomain(),
+                        cartridgeSubscription.getRepository() != null ? cartridgeSubscription.getRepository().getUrl() : null);
+				*/
+                throw e;
+            }
+
+        } finally {
+            // release the write lock
+            //LookupDataHolder.getInstance().releaseWriteLock();
+        }
+    }
     // Grouping
     
     public void removeCompositeApplication (String configCompositeApplicationAlias) throws PersistenceManagerException {

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
index 5de1213..6597499 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
@@ -19,6 +19,7 @@
 
 package org.apache.stratos.manager.utils;
 
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
 import org.apache.stratos.manager.deploy.service.Service;
 import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
 import org.apache.stratos.manager.lookup.ClusterIdToSubscription;
@@ -125,6 +126,27 @@ public class Serializer {
 
     }
 
+    // Grouping
+    public static byte[] serializeServiceToByteArray(CompositeAppDefinition configCompositeApplication)
+            throws IOException {
+
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        ObjectOutput out = null;
+        try {
+            out = new ObjectOutputStream(bos);
+            out.writeObject(configCompositeApplication);
+
+            return bos.toByteArray();
+
+        } finally {
+            if (out != null) {
+                out.close();
+            }
+            bos.close();
+        }
+
+    }
+
     public static byte [] serializeServiceGroupDefinitionToByteArray (ServiceGroupDefinition serviceGroupDefinition)
             throws  IOException {
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 468c67a..d09451c 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@ -259,8 +259,10 @@ public class ServiceUtils {
 
         } catch (CompositeApplicationDefinitionException e) {
             e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        } catch (PersistenceManagerException e) {
+            e.printStackTrace();
         }
-
+        //TODO send to CC
         StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
         stratosAdminResponse.setMessage("Successfully deployed Composite Application [ Id: " + compositeAppDefinition.getApplicationId()
                 + " , alias: " + compositeAppDefinition.getAlias() + " ]");