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/17 13:42:51 UTC
[1/3] git commit: change application definition to allow inner groups
subscribable details
Repository: stratos
Updated Branches:
refs/heads/4.0.0-grouping 8499edac4 -> 11ff72422
change application definition to allow inner groups subscribable details
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fabc64a0
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fabc64a0
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fabc64a0
Branch: refs/heads/4.0.0-grouping
Commit: fabc64a0639218e952b1927495a70b0f14c90c1b
Parents: 308f6d3
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Jul 15 11:55:54 2014 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Jul 15 11:55:54 2014 +0530
----------------------------------------------------------------------
.../pojo/CompositeApplicationDefinition.java | 1 -
.../CompositeApplicationManager.java | 135 ++++++--
.../application/beans/CartridgeDefinition.java | 77 -----
.../application/beans/ComponentDefinition.java | 46 +--
.../beans/CompositeAppDefinition.java | 16 +-
.../application/beans/GroupDefinition.java | 13 +-
.../beans/SubscribableDefinition.java | 56 +---
.../application/beans/SubscribableInfo.java | 13 +-
.../parser/CompositeApplicationParser.java | 5 +-
.../DefaultCompositeApplicationParser.java | 333 +++++++++++++++----
.../application/parser/ParserUtils.java | 64 ++++
.../structure/CompositeAppContext.java | 75 +++++
.../application/structure/GroupContext.java | 107 ++++++
.../application/structure/StartupOrder.java | 48 +++
.../structure/SubscribableContext.java | 108 ++++++
.../CompositeApplicationException.java | 47 +++
.../manager/CartridgeSubscriptionManager.java | 29 ++
.../subscription/CompositeAppSubscription.java | 47 +++
.../rest/endpoint/services/ServiceUtils.java | 36 +-
.../rest/endpoint/services/StratosAdmin.java | 43 ++-
20 files changed, 978 insertions(+), 321 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CompositeApplicationDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CompositeApplicationDefinition.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CompositeApplicationDefinition.java
index 97a9948..04476f6 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CompositeApplicationDefinition.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/CompositeApplicationDefinition.java
@@ -1,7 +1,6 @@
package org.apache.stratos.cloud.controller.pojo;
import java.io.Serializable;
-import java.util.List;
public class CompositeApplicationDefinition implements Serializable {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/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 2a02646..02893e8 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
@@ -1,17 +1,23 @@
package org.apache.stratos.manager.composite.application;
import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
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.composite.application.parser.CompositeApplicationParser;
import org.apache.stratos.manager.composite.application.parser.DefaultCompositeApplicationParser;
+import org.apache.stratos.manager.composite.application.structure.CompositeAppContext;
+import org.apache.stratos.manager.composite.application.structure.GroupContext;
+import org.apache.stratos.manager.composite.application.structure.SubscribableContext;
import org.apache.stratos.manager.composite.application.utils.ApplicationUtils;
-import org.apache.stratos.manager.exception.ADCException;
-import org.apache.stratos.manager.exception.CompositeApplicationDefinitionException;
-import org.apache.stratos.manager.exception.PersistenceManagerException;
+import org.apache.stratos.manager.exception.*;
+import org.apache.stratos.manager.manager.CartridgeSubscriptionManager;
import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
+import org.apache.stratos.manager.subscription.CartridgeSubscription;
+import org.apache.stratos.manager.subscription.SubscriptionData;
import org.apache.stratos.messaging.domain.topology.ConfigCompositeApplication;
//Grouping
@@ -19,30 +25,117 @@ public class CompositeApplicationManager {
private static Log log = LogFactory.getLog(CompositeApplicationManager.class);
- public void deployCompositeApplication (CompositeAppDefinition compositeAppDefinition) throws CompositeApplicationDefinitionException, PersistenceManagerException {
-// if (log.isDebugEnabled()) {
-// log.debug("deploying composite application " + configCompositeApplication.getAlias());
-// }
-// registerCompositeApplication(configCompositeApplication);
-// if (log.isDebugEnabled()) {
-// log.debug("publishing composite application " + configCompositeApplication.getAlias());
-// }
-// ApplicationUtils.publishApplicationCreatedEvent(configCompositeApplication);
-// if (log.isDebugEnabled()) {
-// log.debug("composite application successfully deployed" + configCompositeApplication.getAlias());
-// }
+ public void deployCompositeApplication (CompositeAppDefinition compositeAppDefinition, int tenantId, String tenantDomain,
+ String tenantAdminUsername) throws CompositeApplicationException, CompositeApplicationDefinitionException,
+ PersistenceManagerException {
CompositeApplicationParser compositeAppParser = new DefaultCompositeApplicationParser();
- compositeAppParser.parse(compositeAppDefinition);
-
- DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
- mgr.persistCompositeApplication(compositeAppDefinition);
-
- // TODO: traverse the data structure and create the subscriptions
+ CompositeAppContext compositeAppContext = compositeAppParser.parse(compositeAppDefinition);
log.info("Composite Application [ Id: " + compositeAppDefinition.getApplicationId() + " , alias: "
+ compositeAppDefinition.getAlias() + " ] deployed successfully");
+
+ //DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
+ //mgr.persistCompositeApplication(compositeAppDefinition);
+ Set<CartridgeSubscription> cartridgeSubscriptions = new HashSet<CartridgeSubscription>();
+
+ // traverse through the Composite App Structure and create Cartridge Subscriptions
+ if(compositeAppContext.getSubscribableContexts() != null) {
+ // Subscription relevant to top level Subscribables
+ cartridgeSubscriptions.addAll(getCartridgeSybscriptionsForSubscribables(compositeAppContext.getSubscribableContexts(),
+ tenantId, tenantDomain, tenantAdminUsername));
+ }
+
+ if (compositeAppContext.getGroupContexts() != null) {
+ // Subscriptions relevant to Groups
+ cartridgeSubscriptions.addAll(getCartridgeSubscriptionForGroups(compositeAppContext.getGroupContexts(), tenantId,
+ tenantDomain, tenantAdminUsername));
+ }
}
+
+ private Set<CartridgeSubscription> getCartridgeSubscriptionForGroups (Set<GroupContext> groupContexts,
+ int tenantId, String tenantDomain,
+ String tenantAdminUsername)
+ throws CompositeApplicationException {
+
+ Set<CartridgeSubscription> cartridgeSubscriptions = new HashSet<CartridgeSubscription>();
+ for (GroupContext groupContext : groupContexts) {
+ // create Subscriptions for the Group's top level Subscribables
+ if (groupContext.getSubscribableContexts() != null) {
+ cartridgeSubscriptions.addAll(getCartridgeSybscriptionsForSubscribables(groupContext.getSubscribableContexts(),
+ tenantId, tenantDomain, tenantAdminUsername));
+ }
+ // create Subscriptions for the nested Group's Subscribables
+ if (groupContext.getGroupContexts() != null) {
+ cartridgeSubscriptions.addAll(getCartridgeSubscriptionForGroups(groupContext.getGroupContexts(), tenantId,
+ tenantDomain, tenantAdminUsername));
+ }
+ }
+
+ return cartridgeSubscriptions;
+ }
+
+ private Set<CartridgeSubscription> getCartridgeSybscriptionsForSubscribables (Set<SubscribableContext> subscribableContexts,
+ int tenantId, String tenantDomain,
+ String tenantAdminUsername)
+ throws CompositeApplicationException {
+
+ Set<CartridgeSubscription> cartridgeSubscriptions = new HashSet<CartridgeSubscription>();
+
+ for (SubscribableContext subscribableContext : subscribableContexts) {
+ cartridgeSubscriptions.add(getCartridgeSubscription(subscribableContext, tenantId, tenantDomain, tenantAdminUsername));
+ }
+
+ return cartridgeSubscriptions;
+ }
+
+ private CartridgeSubscription getCartridgeSubscription (SubscribableContext subscribableContext, int tenantId, String tenantDomain,
+ String tenantAdminUsername) throws CompositeApplicationException {
+
+ SubscriptionData subscriptionData = new SubscriptionData();
+ subscriptionData.setCartridgeType(subscribableContext.getCartridgeType());
+ subscriptionData.setCartridgeAlias(subscribableContext.getAlias());
+ subscriptionData.setAutoscalingPolicyName(subscribableContext.getAutoscalingPolicy());
+ subscriptionData.setDeploymentPolicyName(subscribableContext.getDeploymentPolicy());
+ subscriptionData.setTenantId(tenantId);
+ subscriptionData.setTenantDomain(tenantDomain);
+ subscriptionData.setTenantAdminUsername(tenantAdminUsername);
+
+ if (subscribableContext.getRepoUrl() != null && !subscribableContext.getRepoUrl().isEmpty()) {
+ subscriptionData.setRepositoryType("git");
+ subscriptionData.setRepositoryURL(subscribableContext.getRepoUrl());
+ subscriptionData.setPrivateRepository(subscribableContext.isPrivateRepo());
+ subscriptionData.setRepositoryUsername(subscribableContext.getUsername());
+ subscriptionData.setRepositoryPassword(subscribableContext.getPassword());
+ }
+
+ CartridgeSubscriptionManager cartridgeSubscriptionManager = new CartridgeSubscriptionManager();
+ try {
+ return cartridgeSubscriptionManager.createCartridgeSubscription(subscriptionData);
+
+ } catch (ADCException e) {
+ throw new CompositeApplicationException(e);
+ } catch (InvalidCartridgeAliasException e) {
+ throw new CompositeApplicationException(e);
+ } catch (DuplicateCartridgeAliasException e) {
+ throw new CompositeApplicationException(e);
+ } catch (PolicyException e) {
+ throw new CompositeApplicationException(e);
+ } catch (UnregisteredCartridgeException e) {
+ throw new CompositeApplicationException(e);
+ } catch (RepositoryRequiredException e) {
+ throw new CompositeApplicationException(e);
+ } catch (RepositoryCredentialsRequiredException e) {
+ throw new CompositeApplicationException(e);
+ } catch (RepositoryTransportException e) {
+ throw new CompositeApplicationException(e);
+ } catch (AlreadySubscribedException e) {
+ throw new CompositeApplicationException(e);
+ } catch (InvalidRepositoryException e) {
+ throw new CompositeApplicationException(e);
+ }
+
+ }
public void unDeployCompositeApplication(String configApplicationAlias) throws ADCException {
if (log.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/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
deleted file mode 100644
index bb19145..0000000
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.stratos.manager.composite.application.beans;
-
-
-public class CartridgeDefinition {
- private String alias;
- private String type;
- private String deploymentPolicy;
- private String autoscalingPolicy;
- private String repoUrl;
- private boolean privateRepo;
- private String username;
- private String password;
-
- public String getAlias() {
- return alias;
- }
-
- public void setAlias(String alias) {
- this.alias = alias;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getDeploymentPolicy() {
- return deploymentPolicy;
- }
-
- public void setDeploymentPolicy(String deploymentPolicy) {
- this.deploymentPolicy = deploymentPolicy;
- }
-
- public String getAutoscalingPolicy() {
- return autoscalingPolicy;
- }
-
- public void setAutoscalingPolicy(String autoscalingPolicy) {
- this.autoscalingPolicy = autoscalingPolicy;
- }
-
- public String getRepoUrl() {
- return repoUrl;
- }
-
- public void setRepoUrl(String repoUrl) {
- this.repoUrl = repoUrl;
- }
-
- public boolean isPrivateRepo() {
- return privateRepo;
- }
-
- public void setPrivateRepo(boolean privateRepo) {
- this.privateRepo = privateRepo;
- }
-
- public String getUsername() {
- return username;
- }
-
- 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/fabc64a0/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 55be3fe..176ab14 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
@@ -1,51 +1,41 @@
package org.apache.stratos.manager.composite.application.beans;
+import org.apache.stratos.manager.grouping.definitions.DependencyDefinitions;
+import org.apache.stratos.manager.grouping.definitions.StartupOrderDefinition;
+
+import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
+@XmlRootElement(name = "components")
public class ComponentDefinition {
- private String group;
- private String alias;
- private List<SubscribableInfo> subscribables;
- private String deploymentPolicy;
- private String autoscalingPolicy;
-
- public String getGroup() {
- return group;
- }
- public void setGroup(String group) {
- this.group = group;
- }
+ private List<GroupDefinition> groups;
- public String getAlias() {
- return alias;
- }
+ private List<SubscribableDefinition> subscribables;
- public void setAlias(String alias) {
- this.alias = alias;
- }
+ private DependencyDefinitions dependencies;
- public List<SubscribableInfo> getSubscribables() {
+ public List<SubscribableDefinition> getSubscribables() {
return subscribables;
}
- public void setSubscribables(List<SubscribableInfo> subscribables) {
+ public void setSubscribables(List<SubscribableDefinition> subscribables) {
this.subscribables = subscribables;
}
- public String getDeploymentPolicy() {
- return deploymentPolicy;
+ public List<GroupDefinition> getGroups() {
+ return groups;
}
- public void setDeploymentPolicy(String deploymentPolicy) {
- this.deploymentPolicy = deploymentPolicy;
+ public void setGroups(List<GroupDefinition> groups) {
+ this.groups = groups;
}
- public String getAutoscalingPolicy() {
- return autoscalingPolicy;
+ public DependencyDefinitions getDependencies() {
+ return dependencies;
}
- public void setAutoscalingPolicy(String autoscalingPolicy) {
- this.autoscalingPolicy = autoscalingPolicy;
+ public void setDependencies(DependencyDefinitions dependencies) {
+ this.dependencies = dependencies;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CompositeAppDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CompositeAppDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CompositeAppDefinition.java
index 477e098..353d7db 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CompositeAppDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CompositeAppDefinition.java
@@ -29,9 +29,9 @@ public class CompositeAppDefinition {
private String alias;
- private List<ComponentDefinition> components;
+ private ComponentDefinition components;
- private List<CartridgeDefinition> cartridges;
+ private List<SubscribableInfo> subscribableInfo;
public String getApplicationId() {
return applicationId;
@@ -49,19 +49,19 @@ public class CompositeAppDefinition {
this.alias = alias;
}
- public List<ComponentDefinition> getComponents() {
+ public ComponentDefinition getComponents() {
return components;
}
- public void setComponents(List<ComponentDefinition> components) {
+ public void setComponents(ComponentDefinition components) {
this.components = components;
}
- public List<CartridgeDefinition> getCartridges() {
- return cartridges;
+ public List<SubscribableInfo> getSubscribableInfo() {
+ return subscribableInfo;
}
- public void setCartridges(List<CartridgeDefinition> cartridges) {
- this.cartridges = cartridges;
+ public void setSubscribableInfo(List<SubscribableInfo> subscribableInfo) {
+ this.subscribableInfo = subscribableInfo;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/GroupDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/GroupDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/GroupDefinition.java
index 3e92eb5..4cb77f9 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/GroupDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/GroupDefinition.java
@@ -19,10 +19,11 @@
package org.apache.stratos.manager.composite.application.beans;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
-@XmlRootElement
+@XmlRootElement(name = "groups")
public class GroupDefinition {
private String name;
@@ -35,7 +36,7 @@ public class GroupDefinition {
private List<SubscribableDefinition> subscribables;
- private List<GroupDefinition> groups;
+ private List<GroupDefinition> subGroups;
public String getName() {
return name;
@@ -77,11 +78,11 @@ public class GroupDefinition {
this.subscribables = subscribableDefinitions;
}
- public List<GroupDefinition> getGroups() {
- return groups;
+ public List<GroupDefinition> getSubGroups() {
+ return subGroups;
}
- public void setGroups(List<GroupDefinition> groups) {
- this.groups = groups;
+ public void setSubGroups(List<GroupDefinition> subGroups) {
+ this.subGroups = subGroups;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableDefinition.java
index d85f235..77d409a 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableDefinition.java
@@ -21,20 +21,13 @@ package org.apache.stratos.manager.composite.application.beans;
import javax.xml.bind.annotation.XmlRootElement;
-@XmlRootElement
+@XmlRootElement (name = "subscribables")
public class SubscribableDefinition {
private String type;
private String alias;
- private String deploymentPolicy;
- private String autoscalingPolicy;
- private String repoUrl;
- private boolean isPrivateRepo;
- private String repoUsername;
- private String repoPassword;
-
public String getType() {
return type;
@@ -52,51 +45,4 @@ public class SubscribableDefinition {
this.alias = alias;
}
- public String getDeploymentPolicy() {
- return deploymentPolicy;
- }
-
- public void setDeploymentPolicy(String deploymentPolicy) {
- this.deploymentPolicy = deploymentPolicy;
- }
-
- public String getAutoscalingPolicy() {
- return autoscalingPolicy;
- }
-
- public void setAutoscalingPolicy(String autoscalingPolicy) {
- this.autoscalingPolicy = autoscalingPolicy;
- }
-
- public String getRepoUrl() {
- return repoUrl;
- }
-
- public void setRepoUrl(String repoUrl) {
- this.repoUrl = repoUrl;
- }
-
- public boolean isPrivateRepo() {
- return isPrivateRepo;
- }
-
- public void setPrivateRepo(boolean isPrivateRepo) {
- this.isPrivateRepo = isPrivateRepo;
- }
-
- public String getRepoUsername() {
- return repoUsername;
- }
-
- public void setRepoUsername(String repoUsername) {
- this.repoUsername = repoUsername;
- }
-
- public String getRepoPassword() {
- return repoPassword;
- }
-
- public void setRepoPassword(String repoPassword) {
- this.repoPassword = repoPassword;
- }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableInfo.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableInfo.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableInfo.java
index 0190599..09130c3 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableInfo.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/SubscribableInfo.java
@@ -19,9 +19,10 @@
package org.apache.stratos.manager.composite.application.beans;
-public class SubscribableInfo {
+import javax.xml.bind.annotation.XmlRootElement;
- private String type;
+@XmlRootElement(name = "subscribableInfo")
+public class SubscribableInfo {
private String alias;
@@ -92,12 +93,4 @@ public class SubscribableInfo {
public void setPassword(String password) {
this.password = password;
}
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/CompositeApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/CompositeApplicationParser.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/CompositeApplicationParser.java
index 829da0f..e319742 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/CompositeApplicationParser.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/CompositeApplicationParser.java
@@ -19,11 +19,12 @@
package org.apache.stratos.manager.composite.application.parser;
-import org.apache.stratos.cloud.controller.stub.pojo.CompositeApplicationDefinition;
+import org.apache.stratos.manager.composite.application.structure.CompositeAppContext;
import org.apache.stratos.manager.exception.CompositeApplicationDefinitionException;
+
public interface CompositeApplicationParser {
- public CompositeApplicationDefinition parse (Object obj) throws CompositeApplicationDefinitionException;
+ public CompositeAppContext parse (Object obj) throws CompositeApplicationDefinitionException;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
index 8e67c80..9bfc864 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
@@ -19,141 +19,328 @@
package org.apache.stratos.manager.composite.application.parser;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.stratos.cloud.controller.stub.pojo.CompositeApplicationDefinition;
-import org.apache.stratos.manager.composite.application.beans.*;
+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.composite.application.beans.GroupDefinition;
+import org.apache.stratos.manager.composite.application.beans.SubscribableDefinition;
+import org.apache.stratos.manager.composite.application.beans.SubscribableInfo;
+import org.apache.stratos.manager.composite.application.structure.CompositeAppContext;
+import org.apache.stratos.manager.composite.application.structure.GroupContext;
+import org.apache.stratos.manager.composite.application.structure.StartupOrder;
+import org.apache.stratos.manager.composite.application.structure.SubscribableContext;
import org.apache.stratos.manager.exception.CompositeApplicationDefinitionException;
import org.apache.stratos.manager.exception.PersistenceManagerException;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
+import org.apache.stratos.manager.grouping.definitions.StartupOrderDefinition;
import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
-import java.util.List;
+import java.util.*;
public class DefaultCompositeApplicationParser implements CompositeApplicationParser {
- DataInsertionAndRetrievalManager dataInsertionAndRetrievalManager;
+ private static Log log = LogFactory.getLog(DefaultCompositeApplicationParser.class);
+
+ DataInsertionAndRetrievalManager dataInsertionAndRetrievalMgr;
public DefaultCompositeApplicationParser () {
- dataInsertionAndRetrievalManager = new DataInsertionAndRetrievalManager();
+ dataInsertionAndRetrievalMgr = new DataInsertionAndRetrievalManager();
}
@Override
- public CompositeApplicationDefinition parse (Object compositeAppObj) throws CompositeApplicationDefinitionException {
+ public CompositeAppContext parse(Object obj) throws CompositeApplicationDefinitionException {
CompositeAppDefinition compositeAppDefinition = null;
- if (compositeAppObj instanceof CompositeAppDefinition) {
- compositeAppDefinition = (CompositeAppDefinition) compositeAppObj;
-
- } else {
- throw new CompositeApplicationDefinitionException("Invalid Composite Application definition");
+ if (obj instanceof CompositeAppDefinition) {
+ compositeAppDefinition = (CompositeAppDefinition) obj;
}
if (compositeAppDefinition == null) {
- throw new CompositeApplicationDefinitionException("Composite Application definition not found");
+ throw new CompositeApplicationDefinitionException("Invlaid Composite Application Defintion");
}
- String compositeAppId = compositeAppDefinition.getApplicationId();
- if(StringUtils.isEmpty(compositeAppId)){
- throw new CompositeApplicationDefinitionException("Application ID can not be empty");
+ if (compositeAppDefinition.getAlias() == null || compositeAppDefinition.getAlias().isEmpty()) {
+ throw new CompositeApplicationDefinitionException("Invalid alias specified");
}
- String compositeAppAlias = compositeAppDefinition.getAlias();
- // components
- processComponents(compositeAppDefinition.getComponents());
+ if (compositeAppDefinition.getApplicationId() == null || compositeAppDefinition.getApplicationId().isEmpty()) {
+ throw new CompositeApplicationDefinitionException("Invalid Composite App id specified");
+ }
- return null;
+ // get the defined groups
+ Map<String, GroupDefinition> definedGroups = getDefinedGroups(compositeAppDefinition);
+ if (log.isDebugEnabled()) {
+ Set<Map.Entry<String, GroupDefinition>> groupEntries = definedGroups.entrySet();
+ log.debug("Defined Groups: [ ");
+ for (Map.Entry<String, GroupDefinition> groupEntry : groupEntries) {
+ log.debug("Group alias: " + groupEntry.getKey());
+ }
+ log.debug(" ]");
+ }
+
+ // get the Subscribables Information
+ Map<String, SubscribableInfo> subscribablesInfo = getSubscribableInformation(compositeAppDefinition);
+ if (log.isDebugEnabled()) {
+ Set<Map.Entry<String, SubscribableInfo>> subscribableInfoEntries = subscribablesInfo.entrySet();
+ log.debug("Defined Subscribable Information: [ ");
+ for (Map.Entry<String, SubscribableInfo> subscribableInfoEntry : subscribableInfoEntries) {
+ log.debug("Subscribable Information alias: " + subscribableInfoEntry.getKey());
+ }
+ log.debug(" ]");
+ }
+
+ return buildCompositeAppStructure (compositeAppDefinition, definedGroups, subscribablesInfo);
+ }
+
+ private Map<String, GroupDefinition> getDefinedGroups (CompositeAppDefinition compositeAppDefinition) throws
+ CompositeApplicationDefinitionException {
+
+ // map [group alias -> Group Definition]
+ Map<String, GroupDefinition> definedGroups = null;
+
+ if (compositeAppDefinition.getComponents() != null) {
+ if (compositeAppDefinition.getComponents().getGroups() != null) {
+ definedGroups = new HashMap<String, GroupDefinition>();
+
+ for (GroupDefinition group : compositeAppDefinition.getComponents().getGroups()) {
+
+ // check validity of group name
+ if (group.getName() == null || group.getName().isEmpty()) {
+ throw new CompositeApplicationDefinitionException("Invalid Group name specified");
+ }
+
+ // check if group is deployed
+ if(isGroupDeployed(group.getName())) {
+ throw new CompositeApplicationDefinitionException("Group with name " + group.getName() + " not deployed");
+ }
+
+ // check validity of group alias
+ if (group.getAlias() == null || group.getAlias().isEmpty()) {
+ throw new CompositeApplicationDefinitionException("Invalid Group alias specified");
+ }
+
+ // check if a group is already defined under the same alias
+ if(definedGroups.get(group.getAlias()) != null) {
+ // a group with same alias already exists, can't continue
+ throw new CompositeApplicationDefinitionException("A Group with alias " + group.getAlias() + " already exists");
+ }
+
+ definedGroups.put(group.getAlias(), group);
+ if (log.isDebugEnabled()) {
+ log.debug("Added Group Definition [ " + group.getName() +" , " + group.getAlias() + " ] to map [group alias -> Group Definition]");
+ }
+ }
+ }
+ }
+
+ return definedGroups;
+ }
+
+ private Map<String, SubscribableInfo> getSubscribableInformation (CompositeAppDefinition compositeAppDefinition) throws
+ CompositeApplicationDefinitionException {
+
+ // map [cartridge alias -> Subscribable Information]
+ Map<String, SubscribableInfo> subscribableInformation = null;
+
+ if (compositeAppDefinition.getSubscribableInfo() != null) {
+ subscribableInformation = new HashMap<String, SubscribableInfo>();
+
+ for (SubscribableInfo subscribableInfo : compositeAppDefinition.getSubscribableInfo()) {
+
+ if (subscribableInfo.getAlias() == null || subscribableInfo.getAlias().isEmpty()) {
+ throw new CompositeApplicationDefinitionException("Invalid alias specified for Subscribable Information Obj");
+ }
+
+ // check if a group is already defined under the same alias
+ if(subscribableInformation.get(subscribableInfo.getAlias()) != null) {
+ // a group with same alias already exists, can't continue
+ throw new CompositeApplicationDefinitionException("A Subscribable Info obj with alias " + subscribableInfo.getAlias() + " already exists");
+ }
+
+ subscribableInformation.put(subscribableInfo.getAlias(), subscribableInfo);
+ if (log.isDebugEnabled()) {
+ log.debug("Added Subcribables Info obj [ " + subscribableInfo.getAlias() + " ] to map [cartridge alias -> Subscribable Information]");
+ }
+ }
+ }
+
+ return subscribableInformation;
}
- // TODO: should return the relevant object type to send to CC
- private void processComponents(List<ComponentDefinition> components) throws CompositeApplicationDefinitionException {
+ private boolean isGroupDeployed (String serviceGroupName) throws CompositeApplicationDefinitionException {
- if (components == null) {
- return;
+ try {
+ return dataInsertionAndRetrievalMgr.getServiceGroupDefinition(serviceGroupName) != null;
+
+ } catch (PersistenceManagerException e) {
+ throw new CompositeApplicationDefinitionException(e);
}
- for (ComponentDefinition component : components) {
- // process the group definitions
- String groupName = component.getGroup();
- String groupAlias = component.getAlias();
+ }
+
+ private CompositeAppContext buildCompositeAppStructure (CompositeAppDefinition compositeAppDefinition,
+ Map<String, GroupDefinition> definedGroups,
+ Map<String, SubscribableInfo> subscribableInformation)
+ throws CompositeApplicationDefinitionException {
- // neither group name nor alias can be empty
- if (StringUtils.isEmpty(groupName)) {
- throw new CompositeApplicationDefinitionException("Group Name is invalid");
+ CompositeAppContext compositeAppContext = new CompositeAppContext();
+
+ // get top level Subscribables
+ if (compositeAppDefinition.getComponents() != null) {
+ if (compositeAppDefinition.getComponents().getSubscribables() != null) {
+ compositeAppContext.setSubscribableContexts(getSubsribableContexts(compositeAppDefinition.getComponents().getSubscribables(),
+ subscribableInformation));
}
- if (StringUtils.isEmpty(groupAlias)) {
- throw new CompositeApplicationDefinitionException("Group Alias is invalid");
+
+ // get Groups
+ if (compositeAppDefinition.getComponents().getGroups() != null) {
+ compositeAppContext.setGroupContexts(getGroupContexts(compositeAppDefinition.getComponents().getGroups(),
+ subscribableInformation, definedGroups));
}
- // check if the group is deployed. if not can't continue
- if (!isGroupDeployed(groupName)) {
- throw new CompositeApplicationDefinitionException(String.format("No Service Group found with name [ %s ]", groupName));
+ // get top level Dependency definitions
+ if (compositeAppDefinition.getComponents().getDependencies() != null) {
+ compositeAppContext.setStartupOrder(getStartupOrderForApplicationComponents(compositeAppDefinition.getComponents().
+ getDependencies().getStartupOrder()));
+
+ compositeAppContext.setKillBehaviour(compositeAppDefinition.getComponents().getDependencies().getKillBehaviour());
}
+ }
+
+ return compositeAppContext;
+ }
+
+ private Set<GroupContext> getGroupContexts (List<GroupDefinition> groupDefinitions,
+ Map<String, SubscribableInfo> subscribableInformation,
+ Map<String, GroupDefinition> definedGroups)
+ throws CompositeApplicationDefinitionException {
+
+ Set<GroupContext> groupContexts = new HashSet<GroupContext>();
+
+ for (GroupDefinition group : groupDefinitions) {
+ groupContexts.add(getGroupContext(group, subscribableInformation, definedGroups));
+ }
+
+ return groupContexts;
+ }
+
+ private GroupContext getGroupContext (GroupDefinition group, Map<String, SubscribableInfo> subscribableInformation,
+ Map<String, GroupDefinition> definedGroups) throws CompositeApplicationDefinitionException {
+
+ // check if are in the defined Group set
+ GroupDefinition definedGroupDef = definedGroups.get(group.getAlias());
+ if (definedGroupDef == null) {
+ throw new CompositeApplicationDefinitionException("Group Definition with name: " + group.getName() + ", alias: " +
+ group.getAlias() + " is not found in the all Group Definitions collection");
+ }
- // get group level policy information
- String groupDepPolicy = component.getDeploymentPolicy();
- String groupScalePolicy = component.getAutoscalingPolicy();
+ GroupContext groupContext = new GroupContext();
+ // get group level Subscribables
+ if (group.getSubscribables() != null) {
+ groupContext.setName(group.getName());
+ groupContext.setAlias(group.getAlias());
+ groupContext.setAutoscalingPolicy(group.getAutoscalingPolicy());
+ groupContext.setDeploymentPolicy(group.getDeploymentPolicy());
+ groupContext.setSubscribableContexts(getSubsribableContexts(group.getSubscribables(), subscribableInformation));
+ groupContext.setStartupOrder(getStartupOrderForGroup(group.getName()));
+ groupContext.setKillBehaviour(getKillbehaviour(group.getName()));
+ }
+ // get nested groups
+ if (group.getSubGroups() != null) {
+ Set<GroupContext> nestedGroupContexts = new HashSet<GroupContext>();
+ // check sub groups
+ for (GroupDefinition subGroup : group.getSubGroups()) {
+ nestedGroupContexts.add(getGroupContext(subGroup, subscribableInformation, definedGroups));
+ }
- // subscribables
- processSubscribables(component.getSubscribables());
+ groupContext.setGroupContexts(nestedGroupContexts);
}
+
+ return groupContext;
}
- private boolean isGroupDeployed (String groupName) throws CompositeApplicationDefinitionException {
+ private Set<StartupOrder> getStartupOrderForGroup(String serviceGroupName) throws CompositeApplicationDefinitionException {
- ServiceGroupDefinition serviceGroupDefinition = null;
+ ServiceGroupDefinition groupDefinition;
try {
- serviceGroupDefinition = dataInsertionAndRetrievalManager.getServiceGroupDefinition(groupName);
+ groupDefinition = dataInsertionAndRetrievalMgr.getServiceGroupDefinition(serviceGroupName);
} catch (PersistenceManagerException e) {
throw new CompositeApplicationDefinitionException(e);
}
- return serviceGroupDefinition != null;
+ if (groupDefinition == null) {
+ throw new CompositeApplicationDefinitionException("Service Group Definition not found for name " + serviceGroupName);
+ }
+
+ if (groupDefinition.getDependencies() != null) {
+ if (groupDefinition.getDependencies().getStartupOrder() != null) {
+ return ParserUtils.convert(groupDefinition.getDependencies().getStartupOrder());
+ }
+ }
+
+ return null;
}
- // TODO: should return the relevant object type to send to CC
- private void processSubscribables (List<SubscribableInfo> subscribables) throws CompositeApplicationDefinitionException {
+ private Set<StartupOrder> getStartupOrderForApplicationComponents (List<StartupOrderDefinition> startupOrderDefinitions)
+ throws CompositeApplicationDefinitionException {
- if (subscribables == null) {
- return;
+ if (startupOrderDefinitions == null) {
+ return null;
}
- for (SubscribableInfo subscribable : subscribables) {
+ Set<StartupOrder> startupOrders = new HashSet<StartupOrder>();
- String cartridgeType = subscribable.getType();
- String subscriptionAlias = subscribable.getAlias();
+ for (StartupOrderDefinition startupOrderDefinition : startupOrderDefinitions) {
+ startupOrders.add(new StartupOrder(startupOrderDefinition.getStart(), startupOrderDefinition.getAfter()));
+ }
- // neither cartridge type nor alias can be empty
- if (cartridgeType == null || cartridgeType.isEmpty()) {
- throw new CompositeApplicationDefinitionException("Cartridge Type is invalid");
- }
- if (subscriptionAlias == null || subscriptionAlias.isEmpty()) {
- throw new CompositeApplicationDefinitionException("Subscription Alias is invalid");
- }
- // TODO should validate if there exist a cartridge with $cartridgeType
+ return startupOrders;
+ }
+
+ private String getKillbehaviour (String serviceGroupName) throws CompositeApplicationDefinitionException {
+
+ ServiceGroupDefinition groupDefinition;
+
+ try {
+ groupDefinition = dataInsertionAndRetrievalMgr.getServiceGroupDefinition(serviceGroupName);
+
+ } catch (PersistenceManagerException e) {
+ throw new CompositeApplicationDefinitionException(e);
+ }
+ if (groupDefinition == null) {
+ throw new CompositeApplicationDefinitionException("Service Group Definition not found for name " + serviceGroupName);
}
+
+ if (groupDefinition.getDependencies() != null) {
+ return groupDefinition.getDependencies().getKillBehaviour();
+ }
+
+ return null;
+
}
- // TODO: should return the relevant object type to send to CC
- private void getSubscriptionInformation (List<SubscribableInfo> subscribables, String subscriptionAlias) throws CompositeApplicationDefinitionException {
+ private Set<SubscribableContext> getSubsribableContexts (List<SubscribableDefinition> subscribableDefinitions,
+ Map<String, SubscribableInfo> subscribableInformation)
+ throws CompositeApplicationDefinitionException {
- for (SubscribableInfo subscribable : subscribables) {
+ Set<SubscribableContext> subscribableContexts = new HashSet<SubscribableContext>();
- if (subscribable.getAlias().equals(subscriptionAlias)) {
- // match found, retrieve the information
- String deploymentPolicy = subscribable.getDeploymentPolicy();
- String autoscalingPolicy = subscribable.getAutoscalingPolicy();
- String repoUrl = subscribable.getRepoUrl();
- if (repoUrl != null && !repoUrl.isEmpty()) {
- boolean privateRepo = subscribable.isPrivateRepo();
- String repoUsername = subscribable.getUsername();
- String repoPassword = subscribable.getPassword();
- }
+ for (SubscribableDefinition subscribableDefinition : subscribableDefinitions) {
+ // check is there is a related Subscribable Information
+ SubscribableInfo subscribableInfo = subscribableInformation.get(subscribableDefinition.getAlias());
+ if (subscribableInfo == null) {
+ throw new CompositeApplicationDefinitionException("Related Subscribable Information not found for Subscribable with alias: "
+ + subscribableDefinition.getAlias());
}
+
+ subscribableContexts.add(ParserUtils.convert(subscribableDefinition, subscribableInfo));
}
+
+ return subscribableContexts;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
new file mode 100644
index 0000000..be9e703
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.composite.application.parser;
+
+import org.apache.stratos.manager.composite.application.beans.GroupDefinition;
+import org.apache.stratos.manager.composite.application.beans.SubscribableDefinition;
+import org.apache.stratos.manager.composite.application.beans.SubscribableInfo;
+import org.apache.stratos.manager.composite.application.structure.GroupContext;
+import org.apache.stratos.manager.composite.application.structure.StartupOrder;
+import org.apache.stratos.manager.composite.application.structure.SubscribableContext;
+import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
+import org.apache.stratos.manager.grouping.definitions.StartupOrderDefinition;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class ParserUtils {
+
+ public static SubscribableContext convert (SubscribableDefinition subscribable, SubscribableInfo subscribableInfo) {
+
+ SubscribableContext subscribableContext = new SubscribableContext(subscribable.getType(), subscribable.getAlias());
+ subscribableContext.setAutoscalingPolicy(subscribableInfo.getAutoscalingPolicy());
+ subscribableContext.setDeploymentPolicy(subscribableInfo.getDeploymentPolicy());
+
+ if (subscribableInfo.getRepoUrl() != null && !subscribableInfo.getRepoUrl().isEmpty()) {
+ subscribableContext.setRepoUrl(subscribableInfo.getRepoUrl());
+ subscribableContext.setPrivateRepo(subscribableInfo.isPrivateRepo());
+ subscribableContext.setUsername(subscribableInfo.getUsername());
+ subscribableContext.setPassword(subscribableInfo.getPassword());
+ }
+
+ return subscribableContext;
+ }
+
+ public static Set<StartupOrder> convert (List<StartupOrderDefinition> startupOrderDefinitions) {
+
+ Set<StartupOrder> startupOrders = new HashSet<StartupOrder>();
+ for (StartupOrderDefinition startupOrderDefinition : startupOrderDefinitions) {
+ StartupOrder startupOrder = new StartupOrder(startupOrderDefinition.getStart(), startupOrderDefinition.getAfter());
+ startupOrders.add(startupOrder);
+ }
+
+ return startupOrders;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
new file mode 100644
index 0000000..6a589e7
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.composite.application.structure;
+
+import java.util.Set;
+
+public class CompositeAppContext {
+
+ private String appId;
+
+ private Set<GroupContext> groupContexts;
+
+ private Set<SubscribableContext> subscribableContexts;
+
+ private Set<StartupOrder> startupOrder;
+
+ private String killBehaviour;
+
+ public String getAppId() {
+ return appId;
+ }
+
+ public void setAppId(String appId) {
+ this.appId = appId;
+ }
+
+ public Set<GroupContext> getGroupContexts() {
+ return groupContexts;
+ }
+
+ public void setGroupContexts(Set<GroupContext> groupContexts) {
+ this.groupContexts = groupContexts;
+ }
+
+ public Set<SubscribableContext> getSubscribableContexts() {
+ return subscribableContexts;
+ }
+
+ public void setSubscribableContexts(Set<SubscribableContext> subscribableContexts) {
+ this.subscribableContexts = subscribableContexts;
+ }
+
+ public Set<StartupOrder> getStartupOrder() {
+ return startupOrder;
+ }
+
+ public void setStartupOrder(Set<StartupOrder> startupOrder) {
+ this.startupOrder = startupOrder;
+ }
+
+ public String getKillBehaviour() {
+ return killBehaviour;
+ }
+
+ public void setKillBehaviour(String killBehaviour) {
+ this.killBehaviour = killBehaviour;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
new file mode 100644
index 0000000..e7736ea
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.composite.application.structure;
+
+import java.util.List;
+import java.util.Set;
+
+public class GroupContext {
+
+ private String name;
+
+ private String alias;
+
+ private String deploymentPolicy;
+
+ private String autoscalingPolicy;
+
+ private Set<GroupContext> groupContexts;
+
+ private Set<SubscribableContext> subscribableContexts;
+
+ private Set<StartupOrder> startupOrder;
+
+ private String killBehaviour;
+
+
+ public Set<StartupOrder> getStartupOrder() {
+ return startupOrder;
+ }
+
+ public void setStartupOrder(Set<StartupOrder> startupOrder) {
+ this.startupOrder = startupOrder;
+ }
+
+ public String getKillBehaviour() {
+ return killBehaviour;
+ }
+
+ public void setKillBehaviour(String killBehaviour) {
+ this.killBehaviour = killBehaviour;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public String getDeploymentPolicy() {
+ return deploymentPolicy;
+ }
+
+ public void setDeploymentPolicy(String deploymentPolicy) {
+ this.deploymentPolicy = deploymentPolicy;
+ }
+
+ public String getAutoscalingPolicy() {
+ return autoscalingPolicy;
+ }
+
+ public void setAutoscalingPolicy(String autoscalingPolicy) {
+ this.autoscalingPolicy = autoscalingPolicy;
+ }
+
+ public Set<GroupContext> getGroupContexts() {
+ return groupContexts;
+ }
+
+ public void setGroupContexts(Set<GroupContext> groupContexts) {
+ this.groupContexts = groupContexts;
+ }
+
+ public Set<SubscribableContext> getSubscribableContexts() {
+ return subscribableContexts;
+ }
+
+ public void setSubscribableContexts(Set<SubscribableContext> subscribableContexts) {
+ this.subscribableContexts = subscribableContexts;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
new file mode 100644
index 0000000..4553a9f
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.composite.application.structure;
+
+public class StartupOrder {
+
+ private String start;
+
+ private String after;
+
+ public StartupOrder (String start, String after) {
+ this.start = start;
+ this.after = after;
+ }
+
+ public String getStart() {
+ return start;
+ }
+
+ public void setStart(String start) {
+ this.start = start;
+ }
+
+ public String getAfter() {
+ return after;
+ }
+
+ public void setAfter(String after) {
+ this.after = after;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
new file mode 100644
index 0000000..2e30c1b
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.composite.application.structure;
+
+public class SubscribableContext {
+
+ private String cartridgeType;
+
+ private String alias;
+
+ private String deploymentPolicy;
+
+ private String autoscalingPolicy;
+
+ private String repoUrl;
+
+ private boolean privateRepo;
+
+ private String username;
+
+ private String password;
+
+ public SubscribableContext (String cartridgeType, String alias) {
+ this.cartridgeType = cartridgeType;
+ this.alias = alias;
+ }
+
+ public String getCartridgeType() {
+ return cartridgeType;
+ }
+
+ public void setCartridgeType(String cartridgeType) {
+ this.cartridgeType = cartridgeType;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public String getDeploymentPolicy() {
+ return deploymentPolicy;
+ }
+
+ public void setDeploymentPolicy(String deploymentPolicy) {
+ this.deploymentPolicy = deploymentPolicy;
+ }
+
+ public String getAutoscalingPolicy() {
+ return autoscalingPolicy;
+ }
+
+ public void setAutoscalingPolicy(String autoscalingPolicy) {
+ this.autoscalingPolicy = autoscalingPolicy;
+ }
+
+ public String getRepoUrl() {
+ return repoUrl;
+ }
+
+ public void setRepoUrl(String repoUrl) {
+ this.repoUrl = repoUrl;
+ }
+
+ public boolean isPrivateRepo() {
+ return privateRepo;
+ }
+
+ public void setPrivateRepo(boolean privateRepo) {
+ this.privateRepo = privateRepo;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ 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/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/CompositeApplicationException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/CompositeApplicationException.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/CompositeApplicationException.java
new file mode 100644
index 0000000..ea47536
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/CompositeApplicationException.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.exception;
+
+public class CompositeApplicationException extends Exception {
+
+ private String message;
+
+ public CompositeApplicationException () {
+ super();
+ }
+
+ public CompositeApplicationException (String message, Throwable cause) {
+ super(message, cause);
+ this.message = message;
+ }
+
+ public CompositeApplicationException (String message) {
+ super(message);
+ this.message = message;
+ }
+
+ public CompositeApplicationException (Throwable cause) {
+ super(cause);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index 88641fc..f778760 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@ -59,6 +59,35 @@ public class CartridgeSubscriptionManager {
private static Log log = LogFactory.getLog(CartridgeSubscriptionManager.class);
//private static DataInsertionAndRetrievalManager dataInsertionAndRetrievalManager = new DataInsertionAndRetrievalManager();
+
+ public CartridgeSubscription createCartridgeSubscription (SubscriptionData subscriptionData) throws ADCException,
+ InvalidCartridgeAliasException, DuplicateCartridgeAliasException, PolicyException, UnregisteredCartridgeException,
+ RepositoryRequiredException, RepositoryCredentialsRequiredException, RepositoryTransportException,
+ AlreadySubscribedException, InvalidRepositoryException {
+
+
+ CartridgeSubscriptionUtils.validateCartridgeAlias(subscriptionData.getTenantId(), subscriptionData.getCartridgeType(), subscriptionData.getCartridgeAlias());
+
+ CartridgeInfo cartridgeInfo;
+ try {
+ cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(subscriptionData.getCartridgeType());
+
+ } catch (CloudControllerServiceUnregisteredCartridgeExceptionException e) {
+ String message = subscriptionData.getCartridgeType() + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
+ log.error(message);
+ throw new ADCException(message, e);
+
+ } catch (Exception e) {
+ String message = "Error getting info for " + subscriptionData.getCartridgeType();
+ log.error(message, e);
+ throw new ADCException(message, e);
+ }
+
+ // subscribe to relevant service cartridge
+ CartridgeSubscription serviceCartridgeSubscription = subscribe (subscriptionData, cartridgeInfo, null);
+
+ return serviceCartridgeSubscription;
+ }
public SubscriptionInfo subscribeToCartridgeWithProperties(SubscriptionData subscriptionData) throws ADCException,
InvalidCartridgeAliasException,
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
new file mode 100644
index 0000000..d60e939
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.manager.subscription;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+public class CompositeAppSubscription implements Serializable {
+
+ private static Log log = LogFactory.getLog(CompositeAppSubscription.class);
+
+ private Map<String, String> compositeAppToCartridgeSubcription;
+
+ public CompositeAppSubscription () {
+ compositeAppToCartridgeSubcription = new HashMap<String, String>();
+ }
+
+ public void addCartridgeSubscription (String compositeAppAlias, String cartridgeSubscriptionAlias) {
+
+ compositeAppToCartridgeSubcription.put(compositeAppAlias, cartridgeSubscriptionAlias);
+ if (log.isDebugEnabled()) {
+ log.debug("Cartridge Subscription alias [ "+ cartridgeSubscriptionAlias +" ] stored against Composite Application alias [ "
+ + compositeAppAlias + " ]");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/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 d09451c..804e4b5 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
@@ -251,25 +251,25 @@ public class ServiceUtils {
return stratosAdminResponse;
}
*/
- static StratosAdminResponse deployCompositeApplicationDefintion (CompositeAppDefinition compositeAppDefinition)
+ static void deployCompositeApplicationDefintion (CompositeAppDefinition compositeAppDefinition, ConfigurationContext ctxt,
+ String userName, String tenantDomain)
throws RestAPIException {
+ int tenantId = ApplicationManagementUtil.getTenantId(ctxt);
+
try {
- compositeApplicationManager.deployCompositeApplication(compositeAppDefinition);
+ compositeApplicationManager.deployCompositeApplication(compositeAppDefinition, tenantId, tenantDomain, userName);
} catch (CompositeApplicationDefinitionException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ throw new RestAPIException(e);
} catch (PersistenceManagerException e) {
- e.printStackTrace();
+ throw new RestAPIException(e);
+ } catch (CompositeApplicationException e) {
+ throw new RestAPIException(e);
}
- //TODO send to CC
- StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
- stratosAdminResponse.setMessage("Successfully deployed Composite Application [ Id: " + compositeAppDefinition.getApplicationId()
- + " , alias: " + compositeAppDefinition.getAlias() + " ]");
- return stratosAdminResponse;
}
- static StratosAdminResponse unDeployApplication(String configCompositeApplicationAlias, ConfigurationContext ctxt,
+ static void unDeployApplication(String configCompositeApplicationAlias, ConfigurationContext ctxt,
String userName, String tenantDomain) throws RestAPIException {
log.info("Starting to undeploy a composite application definition " + configCompositeApplicationAlias);
@@ -308,10 +308,6 @@ public class ServiceUtils {
}
log.info(String.format("[type] %s", configCompositeApplicationAlias));
-
- StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
- stratosAdminResponse.setMessage("Successfully un-deployed application with alias " + configCompositeApplicationAlias);
- return stratosAdminResponse;
}
@@ -1423,7 +1419,7 @@ public class ServiceUtils {
return stratosAdminResponse;
}
- static StratosAdminResponse deployServiceGroupDefinition (ServiceGroupDefinition serviceGroupDefinition) throws RestAPIException {
+ static void deployServiceGroupDefinition (ServiceGroupDefinition serviceGroupDefinition) throws RestAPIException {
try {
serviceGropingManager.deployServiceGroupDefinition(serviceGroupDefinition);
@@ -1439,10 +1435,6 @@ public class ServiceUtils {
}
log.info("Successfully deployed the Service Group Definition with name " + serviceGroupDefinition.getName());
-
- StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
- stratosAdminResponse.setMessage("Successfully deployed Service Group Definition with name " + serviceGroupDefinition.getName());
- return stratosAdminResponse;
}
static ServiceGroupDefinition getServiceGroupDefinition (String serviceGroupDefinitionName) throws RestAPIException {
@@ -1455,7 +1447,7 @@ public class ServiceUtils {
}
}
- static StratosAdminResponse undeployServiceGroupDefinition (String serviceGroupDefinitionName) throws RestAPIException {
+ static void undeployServiceGroupDefinition (String serviceGroupDefinitionName) throws RestAPIException {
try {
serviceGropingManager.undeployServiceGroupDefinition(serviceGroupDefinitionName);
@@ -1465,9 +1457,5 @@ public class ServiceUtils {
}
log.info("Successfully undeployed the Service Group Definition with name " + serviceGroupDefinitionName);
-
- StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
- stratosAdminResponse.setMessage("Successfully undeplpoyed Service Group Definition with name " + serviceGroupDefinitionName);
- return stratosAdminResponse;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fabc64a0/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
index 8cdf16b..98b3725 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
@@ -63,7 +63,9 @@ import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -73,6 +75,8 @@ public class StratosAdmin extends AbstractAdmin {
private static Log log = LogFactory.getLog(StratosAdmin.class);
@Context
HttpServletRequest httpServletRequest;
+ @Context
+ UriInfo uriInfo;
@POST
@Path("/init")
@@ -130,10 +134,13 @@ public class StratosAdmin extends AbstractAdmin {
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
@SuperTenantService(true)
// Grouping
- public StratosAdminResponse deployApplicationDefinition(CompositeAppDefinition applicationDefinitionBean)
+ public Response deployApplicationDefinition(CompositeAppDefinition applicationDefinitionBean)
throws RestAPIException {
- return ServiceUtils.deployCompositeApplicationDefintion(applicationDefinitionBean);
+ ServiceUtils.deployCompositeApplicationDefintion(applicationDefinitionBean, getConfigContext(),
+ getUsername(), getTenantDomain());
+ URI url = uriInfo.getAbsolutePathBuilder().path(applicationDefinitionBean.getApplicationId()).build();
+ return Response.created(url).build();
}
/* @POST
@@ -157,12 +164,12 @@ public class StratosAdmin extends AbstractAdmin {
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
@SuperTenantService(true)
// Grouping
- public StratosAdminResponse unDeployApplicationDefinition(String alias)
+ public Response unDeployApplicationDefinition(String alias)
throws RestAPIException {
- return ServiceUtils.unDeployApplication(alias, getConfigContext(), getUsername(),
- getTenantDomain());
-
+ ServiceUtils.unDeployApplication(alias, getConfigContext(), getUsername(),
+ getTenantDomain());
+ return Response.noContent().build();
}
@@ -174,11 +181,12 @@ public class StratosAdmin extends AbstractAdmin {
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
@SuperTenantService(true)
// Grouping
- public StratosAdminResponse unDeployApplicationDefinitionX(@PathParam("applicationAlias")String configCompositeApplicationAlias)
+ public Response unDeployApplicationDefinitionX(@PathParam("applicationAlias")String configCompositeApplicationAlias)
throws RestAPIException {
- return ServiceUtils.unDeployApplication(configCompositeApplicationAlias, getConfigContext(), getUsername(),
- getTenantDomain());
+ ServiceUtils.unDeployApplication(configCompositeApplicationAlias, getConfigContext(), getUsername(),
+ getTenantDomain());
+ return Response.noContent().build();
}
@@ -232,10 +240,12 @@ public class StratosAdmin extends AbstractAdmin {
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
@SuperTenantService(true)
- public StratosAdminResponse deployServiceGroupDefinition (ServiceGroupDefinition serviceGroupDefinition)
+ public Response deployServiceGroupDefinition (ServiceGroupDefinition serviceGroupDefinition)
throws RestAPIException {
- return ServiceUtils.deployServiceGroupDefinition(serviceGroupDefinition);
+ ServiceUtils.deployServiceGroupDefinition(serviceGroupDefinition);
+ URI url = uriInfo.getAbsolutePathBuilder().path(serviceGroupDefinition.getName()).build();
+ return Response.created(url).build();
}
@GET
@@ -243,10 +253,10 @@ public class StratosAdmin extends AbstractAdmin {
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public ServiceGroupDefinition getServiceGroupDefinition (@PathParam("groupDefinitionName") String groupDefinitionName)
+ public Response getServiceGroupDefinition (@PathParam("groupDefinitionName") String groupDefinitionName)
throws RestAPIException {
-
- return ServiceUtils.getServiceGroupDefinition(groupDefinitionName);
+ Response.ResponseBuilder rb = Response.ok().entity(ServiceUtils.getServiceGroupDefinition(groupDefinitionName));
+ return rb.build();
}
@DELETE
@@ -255,10 +265,11 @@ public class StratosAdmin extends AbstractAdmin {
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
@SuperTenantService(true)
- public StratosAdminResponse undeployServiceGroupDefinition (@PathParam("groupDefinitionName") String groupDefinitionName)
+ public Response undeployServiceGroupDefinition (@PathParam("groupDefinitionName") String groupDefinitionName)
throws RestAPIException {
- return ServiceUtils.undeployServiceGroupDefinition(groupDefinitionName);
+ ServiceUtils.undeployServiceGroupDefinition(groupDefinitionName);
+ return Response.noContent().build();
}
@POST
[3/3] git commit: Merge branch '4.0.0-grouping' of
https://git-wip-us.apache.org/repos/asf/stratos into grouping
Posted by ud...@apache.org.
Merge branch '4.0.0-grouping' of https://git-wip-us.apache.org/repos/asf/stratos into grouping
Conflicts:
components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/11ff7242
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/11ff7242
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/11ff7242
Branch: refs/heads/4.0.0-grouping
Commit: 11ff72422cb1c77b066b83728240aa761c24d0d1
Parents: 60f2359 8499eda
Author: Udara Liyanage <ud...@wso2.com>
Authored: Thu Jul 17 17:12:14 2014 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Thu Jul 17 17:12:14 2014 +0530
----------------------------------------------------------------------
.../CompositeApplicationManager.java | 338 +++++++++++++------
.../DefaultCompositeApplicationParser.java | 12 +-
.../application/utils/ApplicationUtils.java | 14 +
.../CompositeAppSubscriptionException.java | 47 +++
.../exception/GroupSubscriptionException.java | 47 +++
.../manager/CartridgeSubscriptionManager.java | 52 ++-
.../manager/persistence/PersistenceManager.java | 32 +-
.../RegistryBasedPersistenceManager.java | 259 ++------------
.../DataInsertionAndRetrievalManager.java | 107 ++----
.../subscription/CompositeAppSubscription.java | 54 ++-
.../manager/subscription/GroupSubscription.java | 83 +++++
.../rest/endpoint/services/ServiceUtils.java | 25 --
12 files changed, 590 insertions(+), 480 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/11ff7242/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
index 9bfc864,fdd0138..a2b36bd
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
@@@ -116,8 -117,8 +117,8 @@@ public class DefaultCompositeApplicatio
}
// check validity of group alias
- if (group.getAlias() == null || group.getAlias().isEmpty()) {
- throw new CompositeApplicationDefinitionException("Invalid Group alias specified");
- if (group.getAlias() == null || group.getAlias().isEmpty() || ApplicationUtils.isAliasValid(group.getAlias())) {
++ if (group.getAlias() == null || group.getAlias().isEmpty() || !ApplicationUtils.isAliasValid(group.getAlias())) {
+ throw new CompositeApplicationDefinitionException("Invalid Group alias specified: [ " + group.getAlias() + " ]");
}
// check if a group is already defined under the same alias
@@@ -148,8 -149,9 +149,9 @@@
for (SubscribableInfo subscribableInfo : compositeAppDefinition.getSubscribableInfo()) {
- if (subscribableInfo.getAlias() == null || subscribableInfo.getAlias().isEmpty()) {
- throw new CompositeApplicationDefinitionException("Invalid alias specified for Subscribable Information Obj");
+ if (subscribableInfo.getAlias() == null || subscribableInfo.getAlias().isEmpty() ||
- ApplicationUtils.isAliasValid(subscribableInfo.getAlias())) {
++ !ApplicationUtils.isAliasValid(subscribableInfo.getAlias())) {
+ throw new CompositeApplicationDefinitionException("Invalid alias specified for Subscribable Information Obj: [ " + subscribableInfo.getAlias() + " ]");
}
// check if a group is already defined under the same alias
http://git-wip-us.apache.org/repos/asf/stratos/blob/11ff7242/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 804e4b5,e02ea11..9b7fff8
--- 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
@@@ -308,32 -314,36 +308,7 @@@ public class ServiceUtils
}
log.info(String.format("[type] %s", configCompositeApplicationAlias));
-
- StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
- stratosAdminResponse.setMessage("Successfully un-deployed application with alias " + configCompositeApplicationAlias);
- return stratosAdminResponse;
}
--
--
- static StratosAdminResponse unDeployApplicationOld(String configCompositeApplicationAlias, ConfigurationContext ctxt,
- String userName, String tenantDomain) throws RestAPIException {
-
- log.info("Starting to undeploy a composite application " + configCompositeApplicationAlias);
-
- CompositeApplicationManager manager = new CompositeApplicationManager();
-
- try {
- manager.unDeployCompositeApplication(configCompositeApplicationAlias);
- } catch (ADCException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- String message = e.getMessage();
- log.error(message, e);
- throw new RestAPIException(message, e);
- }
-
- log.info("l [type] " + configCompositeApplicationAlias);
-
- StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
- stratosAdminResponse.setMessage("Successfully un-deployed application with alias " + configCompositeApplicationAlias);
- return stratosAdminResponse;
- }
-// static StratosAdminResponse unDeployApplicationOld(String configCompositeApplicationAlias, ConfigurationContext ctxt,
-// String userName, String tenantDomain) throws RestAPIException {
-//
-// log.info("Starting to undeploy a composite application " + configCompositeApplicationAlias);
-//
-// CompositeApplicationManager manager = new CompositeApplicationManager();
-//
-// try {
-// manager.unDeployCompositeApplication(configCompositeApplicationAlias);
-// } catch (ADCException e) {
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// String message = e.getMessage();
-// log.error(message, e);
-// throw new RestAPIException(message, e);
-// }
-//
-// log.info("l [type] " + configCompositeApplicationAlias);
-//
-// StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
-// stratosAdminResponse.setMessage("Successfully un-deployed application with alias " + configCompositeApplicationAlias);
-// return stratosAdminResponse;
-// }
@SuppressWarnings("unused")
private static DeploymentPolicy[] intersection(
[2/3] git commit: Merge branch '4.0.0-grouping' of
https://git-wip-us.apache.org/repos/asf/stratos into grouping
Posted by ud...@apache.org.
Merge branch '4.0.0-grouping' of https://git-wip-us.apache.org/repos/asf/stratos into grouping
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/60f23599
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/60f23599
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/60f23599
Branch: refs/heads/4.0.0-grouping
Commit: 60f23599569b076e65bb95d1f43f6a40d977be0c
Parents: fabc64a 1fa2d66
Author: Udara Liyanage <ud...@wso2.com>
Authored: Wed Jul 16 10:47:24 2014 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Wed Jul 16 10:47:24 2014 +0530
----------------------------------------------------------------------
.../stratos/autoscaler/AutoscalerContext.java | 37 +-
.../autoscaler/ComplexApplicationContext.java | 38 +-
.../AutoscalerTopologyEventReceiver.java | 393 +++++++++++--------
.../autoscaler/monitor/AbstractMonitor.java | 145 ++++---
.../autoscaler/monitor/ClusterMonitor.java | 38 +-
.../monitor/CompositeApplicationMonitor.java | 254 ++++++++++++
.../autoscaler/monitor/LbClusterMonitor.java | 25 +-
.../messaging/domain/topology/Cartridge.java | 14 +-
.../domain/topology/CompositeApplication.java | 24 +-
.../util/CompositeApplicationBuilder.java | 18 +-
.../event/topology/MemberActivatedEvent.java | 13 +-
11 files changed, 681 insertions(+), 318 deletions(-)
----------------------------------------------------------------------