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 <[email protected]> Authored: Fri Jul 11 21:15:28 2014 +0530 Committer: Udara Liyanage <[email protected]> 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() + " ]");
