You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/12/15 19:17:22 UTC
[4/4] stratos git commit: Refining application deployment process
Refining application deployment process
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fbcf3847
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fbcf3847
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fbcf3847
Branch: refs/heads/4.1.0-test
Commit: fbcf3847175c69604fed3b56c97085f16ab7d02c
Parents: e11d743
Author: Imesh Gunaratne <im...@apache.org>
Authored: Mon Dec 15 23:38:22 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Mon Dec 15 23:43:31 2014 +0530
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 179 +--
.../applications/pojo/ApplicationContext.java | 18 +-
.../applications/topic/ApplicationBuilder.java | 2 +-
.../autoscaler/context/AutoscalerContext.java | 56 +-
.../interfaces/AutoScalerServiceInterface.java | 100 +-
.../autoscaler/registry/RegistryManager.java | 164 +-
.../autoscaler/util/AutoScalerConstants.java | 1 +
.../controller/util/CloudControllerUtil.java | 48 +-
.../stratos/common/beans/ApplicationBean.java | 32 +-
.../manager/client/AutoscalerServiceClient.java | 64 +-
.../beans/ApplicationDefinition.java | 15 +-
.../domain/applications/Application.java | 18 +
.../rest/endpoint/api/StratosApiV40.java | 30 +-
.../rest/endpoint/api/StratosApiV40Utils.java | 75 -
.../rest/endpoint/api/StratosApiV41.java | 212 ++-
.../rest/endpoint/api/StratosApiV41Utils.java | 200 ++-
.../endpoint/util/converter/PojoConverter.java | 144 +-
.../src/main/resources/AutoScalerService.wsdl | 1507 ++++++------------
18 files changed, 1227 insertions(+), 1638 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 9f42599..d5c92e9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -71,83 +71,11 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
private static final Log log = LogFactory.getLog(AutoScalerServiceImpl.class);
- public DeploymentPolicy[] getAllDeploymentPolicies() {
- return PolicyManager.getInstance().getDeploymentPolicyList();
- }
- public AutoscalePolicy[] getAllAutoScalingPolicy() {
+ public AutoscalePolicy[] getAutoScalingPolicies() {
return PolicyManager.getInstance().getAutoscalePolicyList();
}
- @Override
- public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String cartridgeType) {
- ArrayList<DeploymentPolicy> validPolicies = new ArrayList<DeploymentPolicy>();
-
- for (DeploymentPolicy deploymentPolicy : this.getAllDeploymentPolicies()) {
- /*try {
- // call CC API
- //CloudControllerClient.getInstance().validateDeploymentPolicy(cartridgeType, deploymentPolicy);
- // if this deployment policy is valid for this cartridge, add it.
- validPolicies.add(deploymentPolicy);
- } catch (PartitionValidationException ignoredException) {
- // if this policy doesn't valid for the given cartridge, add a debug log.
- if (log.isDebugEnabled()) {
- log.debug("Deployment policy [id] " + deploymentPolicy.getApplicationId()
- + " is not valid for Cartridge [type] " + cartridgeType, ignoredException);
- }
- }*/
- }
- return validPolicies.toArray(new DeploymentPolicy[0]);
- }
-
- @Override
- public boolean deployDeploymentPolicy(DeploymentPolicy policy) {
- try {
- String policyId = PolicyManager.getInstance().deployDeploymentPolicy(policy);
- } catch (InvalidPolicyException e) {
- log.error("Error while deploying the deployment policy " + policy.getApplicationId(), e);
- }
- //Need to start the application Monitor after validation of the deployment policies.
- //FIXME add validation
- validateDeploymentPolicy(policy);
- //Check whether all the clusters are there
- ApplicationHolder.acquireReadLock();
- boolean allClusterInitialized = false;
- String appId = policy.getApplicationId();
- try {
- Application application = ApplicationHolder.getApplications().
- getApplication(policy.getApplicationId());
- if (application != null) {
-
- allClusterInitialized = AutoscalerUtil.allClustersInitialized(application);
- }
- } finally {
- ApplicationHolder.releaseReadLock();
- }
-
- if (!AutoscalerContext.getInstance().containsPendingMonitor(appId)
- || !AutoscalerContext.getInstance().monitorExists(appId)) {
- if(allClusterInitialized) {
- AutoscalerUtil.getInstance().
- startApplicationMonitor(appId);
- } else {
- log.info("The application clusters are not yet created. " +
- "Waiting for them to be created");
- }
- } else {
- log.info("The application Monitor has already been created for [Application] " + appId);
- }
- //FIXME add proper return value when validation is done properly
- return true;
- }
-
- @Override
- public String addDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws InvalidPolicyException {
- String policyId = PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy);
-
- return policyId;
- }
-
private boolean validateDeploymentPolicy(DeploymentPolicy deploymentPolicy) {
for(ChildPolicy childPolicy : deploymentPolicy.getChildPolicies()) {
@@ -211,16 +139,6 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
}
@Override
- public boolean undeployDeploymentPolicy(String applicationId) {
- return ApplicationBuilder.handleApplicationPolicyUndeployed(applicationId);
- }
-
- @Override
- public boolean updateDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws InvalidPolicyException {
- return PolicyManager.getInstance().updateDeploymentPolicy(deploymentPolicy);
- }
-
- @Override
public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws InvalidPolicyException {
return PolicyManager.getInstance().deployAutoscalePolicy(autoscalePolicy);
}
@@ -245,37 +163,94 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
return PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getApplicationLevelNetworkPartitions();
}
- // @Override
- public Partition[] getPartitionsOfGroup(String deploymentPolicyId, String groupId) {
- DeploymentPolicy depPol = this.getDeploymentPolicy(deploymentPolicyId);
- if (null == depPol) {
- return null;
+ @Override
+ public void addApplication(ApplicationContext applicationContext)
+ throws ApplicationDefinitionException {
+ ApplicationParser applicationParser = new DefaultApplicationParser();
+ applicationParser.parse(applicationContext);
+ applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
+ AutoscalerContext.getInstance().addApplicationContext(applicationContext);
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Application added successfully: [application-id] ",
+ applicationContext.getApplicationId()));
}
+ }
- ApplicationLevelNetworkPartition group = depPol.getApplicationLevelNetworkPartition(groupId);
-
- if (group == null) {
- return null;
- }
+ @Override
+ public ApplicationContext getApplication(String applicationId) {
+ return AutoscalerContext.getInstance().getApplicationContext(applicationId);
+ }
- return group.getPartitions();
+ @Override
+ public ApplicationContext[] getApplications() {
+ return AutoscalerContext.getInstance().getApplicationContexts().
+ toArray(new ApplicationContext[AutoscalerContext.getInstance().getApplicationContexts().size()]);
}
@Override
- public void deployApplicationDefinition(ApplicationContext applicationContext)
- throws ApplicationDefinitionException {
+ public boolean deployApplication(String applicationId, DeploymentPolicy policy) throws ApplicationDefinitionException {
+ ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContext(applicationId);
+ if(applicationContext == null) {
+ throw new RuntimeException("Application not found: " + applicationId);
+ }
ApplicationParser applicationParser = new DefaultApplicationParser();
Application application = applicationParser.parse(applicationContext);
- // publishMetadata(applicationParser, application.getUniqueIdentifier());
- ApplicationBuilder.handleApplicationCreated(application,
- applicationParser.getApplicationClusterContexts());
+ ApplicationBuilder.handleApplicationCreated(application, applicationParser.getApplicationClusterContexts());
+
+ try {
+ String policyId = PolicyManager.getInstance().deployDeploymentPolicy(policy);
+ } catch (InvalidPolicyException e) {
+ log.error("Error while deploying the deployment policy " + policy.getApplicationId(), e);
+ }
+
+ //Need to start the application Monitor after validation of the deployment policies.
+ //FIXME add validation
+ validateDeploymentPolicy(policy);
+ //Check whether all the clusters are there
+ ApplicationHolder.acquireReadLock();
+ boolean allClusterInitialized = false;
+ try {
+ application = ApplicationHolder.getApplications().getApplication(policy.getApplicationId());
+ if (application != null) {
+ allClusterInitialized = AutoscalerUtil.allClustersInitialized(application);
+ }
+ } finally {
+ ApplicationHolder.releaseReadLock();
+ }
+
+ if (!AutoscalerContext.getInstance().containsPendingMonitor(applicationId)
+ || !AutoscalerContext.getInstance().monitorExists(applicationId)) {
+ if(allClusterInitialized) {
+ AutoscalerUtil.getInstance().startApplicationMonitor(applicationId);
+ } else {
+ log.info("The application clusters are not yet created. " +
+ "Waiting for them to be created");
+ }
+ } else {
+ log.info("The application Monitor has already been created for [Application] " + applicationId);
+ }
+ applicationContext.setStatus(ApplicationContext.STATUS_DEPLOYED);
+ AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
+ return true;
}
@Override
- public void unDeployApplicationDefinition(String applicationId, int tenantId, String tenantDomain)
- throws ApplicationDefinitionException {
- ApplicationBuilder.handleApplicationDeleted(applicationId);
+ public void undeployApplication(String applicationId) {
+ ApplicationBuilder.handleApplicationUndeployed(applicationId);
+
+ ApplicationContext applicationContext = AutoscalerContext.getInstance().getApplicationContext(applicationId);
+ applicationContext.setStatus(ApplicationContext.STATUS_CREATED);
+ AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
+ }
+
+ @Override
+ public void deleteApplication(String applicationId) {
+ AutoscalerContext.getInstance().removeApplicationContext(applicationId);
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Application deleted successfully: [application-id] ",
+ applicationId));
+ }
}
public void updateClusterMonitor(String clusterId, Properties properties) throws InvalidArgumentException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
index 97fc537..6f48263 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java
@@ -27,19 +27,17 @@ public class ApplicationContext implements Serializable {
private static final long serialVersionUID = 6704036501869668646L;
- private int tenantId;
+ public static final String STATUS_CREATED = "Created";
+ public static final String STATUS_DEPLOYED = "Deployed";
+ private int tenantId;
private String tenantDomain;
-
private String teantAdminUsername;
-
private String applicationId;
-
private String alias;
-
private ComponentContext componentContext;
-
private Properties properties;
+ private String status;
public ApplicationContext() {
}
@@ -100,4 +98,12 @@ public class ApplicationContext implements Serializable {
this.properties = properties;
}
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index fb5909f..c85fe7f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -183,7 +183,7 @@ public class ApplicationBuilder {
}
}
- public static void handleApplicationDeleted(String appId) {
+ public static void handleApplicationUndeployed(String appId) {
if (log.isDebugEnabled()) {
log.debug("Handling application unDeployment for [application-id] " + appId);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
index 2452255..ce5e553 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
@@ -20,13 +20,13 @@
*/
package org.apache.stratos.autoscaler.context;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
/**
* It holds all cluster monitors which are active in stratos.
@@ -35,6 +35,8 @@ public class AutoscalerContext {
private static final AutoscalerContext INSTANCE = new AutoscalerContext();
+ // Map<ApplicationId, ApplicationContext>
+ private Map<String, ApplicationContext> applicationContextMap;
// Map<ClusterId, AbstractClusterMonitor>
private Map<String, AbstractClusterMonitor> clusterMonitors;
// Map<ApplicationId, ApplicationMonitor>
@@ -43,11 +45,29 @@ public class AutoscalerContext {
private List<String> pendingApplicationMonitors;
private AutoscalerContext() {
+ applicationContextMap = readApplicationContextsFromRegistry();
+ if(applicationContextMap == null) {
+ applicationContextMap = new ConcurrentHashMap<String, ApplicationContext>();
+ }
setClusterMonitors(new HashMap<String, AbstractClusterMonitor>());
setApplicationMonitors(new HashMap<String, ApplicationMonitor>());
pendingApplicationMonitors = new ArrayList<String>();
}
+ private Map<String, ApplicationContext> readApplicationContextsFromRegistry() {
+ String[] resourcePaths = RegistryManager.getInstance().getApplicationContextResourcePaths();
+ if((resourcePaths == null) || (resourcePaths.length == 0)) {
+ return null;
+ }
+
+ Map<String, ApplicationContext> applicationContextMap = new ConcurrentHashMap<String, ApplicationContext>();
+ for(String resourcePath : resourcePaths) {
+ ApplicationContext applicationContext = RegistryManager.getInstance().getApplicationContextByResourcePath(resourcePath);
+ applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
+ }
+ return applicationContextMap;
+ }
+
public static AutoscalerContext getInstance() {
return INSTANCE;
}
@@ -115,4 +135,32 @@ public class AutoscalerContext {
public boolean monitorExists(String appId) {
return this.applicationMonitors.containsKey(appId);
}
+
+ public void addApplicationContext(ApplicationContext applicationContext) {
+ applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
+ RegistryManager.getInstance().persistApplicationContext(applicationContext);
+ }
+
+ public void removeApplicationContext(String applicationId) {
+ if(applicationContextMap.containsKey(applicationId)) {
+ applicationContextMap.remove(applicationId);
+ RegistryManager.getInstance().removeApplicationContext(applicationId);
+ }
+ }
+
+ public ApplicationContext getApplicationContext(String applicationId) {
+ if(applicationContextMap.containsKey(applicationId)) {
+ return applicationContextMap.get(applicationId);
+ }
+ return null;
+ }
+
+ public Collection<ApplicationContext> getApplicationContexts() {
+ return applicationContextMap.values();
+ }
+
+ public void updateApplicationContext(ApplicationContext applicationContext) {
+ applicationContextMap.put(applicationContext.getApplicationId(), applicationContext);
+ RegistryManager.getInstance().persistApplicationContext(applicationContext);
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index 096450a..9b5ea6a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@ -31,29 +31,87 @@ import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
import org.apache.stratos.common.Properties;
public interface AutoScalerServiceInterface {
+ /**
+ * Add autoscaling policy
+ * @param autoscalePolicy
+ * @return
+ * @throws InvalidPolicyException
+ */
+ public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws InvalidPolicyException;
- public DeploymentPolicy[] getAllDeploymentPolicies();
+ /**
+ * Get an autoscaling policy
+ * @param autoscalingPolicyId
+ * @return
+ */
+ public AutoscalePolicy getAutoscalingPolicy(String autoscalingPolicyId);
- public String addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException;
-
- public boolean deployDeploymentPolicy(DeploymentPolicy deploymentPolicy);
+ /**
+ * Get autoscaling policies
+ * @return
+ */
+ public AutoscalePolicy[] getAutoScalingPolicies();
- public boolean undeployDeploymentPolicy(String deploymentPolicyName);
+ /**
+ * Update an autoscaling policy
+ * @param autoscalePolicy
+ * @return
+ * @throws InvalidPolicyException
+ */
+ public boolean updateAutoScalingPolicy(AutoscalePolicy autoscalePolicy) throws InvalidPolicyException;
- public boolean updateDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException;
+ /**
+ * Add an application
+ *
+ * @param applicationContext {@link org.apache.stratos.autoscaler.applications.pojo.ApplicationContext}
+ * @throws ApplicationDefinitionException if an error occurs
+ */
+ public void addApplication(ApplicationContext applicationContext) throws ApplicationDefinitionException;
- public AutoscalePolicy[] getAllAutoScalingPolicy();
+ /**
+ * Get an application
+ * @param applicationId
+ */
+ public ApplicationContext getApplication(String applicationId);
- public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException;
+ /**
+ * Get all applications
+ */
+ public ApplicationContext[] getApplications();
- public boolean updateAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException;
+ /**
+ * Deploy an application in created state
+ * @param applicationId
+ * @param deploymentPolicy
+ * @return
+ */
+ public boolean deployApplication(String applicationId, DeploymentPolicy deploymentPolicy) throws ApplicationDefinitionException;
- public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String cartridgeType);
+ /**
+ * Undeploy an application in deployed state
+ * @param applicationId
+ * @return
+ */
+ public void undeployApplication(String applicationId);
- public DeploymentPolicy getDeploymentPolicy(String deploymentPolicyId);
+ /**
+ * Delete an application
+ * @param applicationId
+ */
+ public void deleteApplication(String applicationId);
- public AutoscalePolicy getAutoscalingPolicy(String autoscalingPolicyId);
+ /**
+ * Returns a deployment policy of an application
+ * @param applicationId
+ * @return
+ */
+ public DeploymentPolicy getDeploymentPolicy(String applicationId);
+ /**
+ * Returns network partitions of a deployment policy
+ * @param deploymentPolicyId
+ * @return
+ */
public org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ApplicationLevelNetworkPartition[] getNetworkPartitions(String deploymentPolicyId);
/**
@@ -62,24 +120,6 @@ public interface AutoScalerServiceInterface {
* @param properties updated properties.
*/
void updateClusterMonitor(String clusterId, Properties properties) throws InvalidArgumentException;
-
- /**
- * deploys an Application Definition
- *
- * @param applicationContext {@link org.apache.stratos.autoscaler.applications.pojo.ApplicationContext} object
- * @throws ApplicationDefinitionException if an error is encountered
- */
- public void deployApplicationDefinition (ApplicationContext applicationContext) throws ApplicationDefinitionException;
-
- /**
- * undeploys an Application Definition
- *
- * @param applicationId Id of the Application to be undeployed
- * @throws ApplicationDefinitionException if an error is encountered
- */
- public void unDeployApplicationDefinition (String applicationId, int tenantId, String tenantDomain)
- throws ApplicationDefinitionException;
-
/**
* Get service group by name
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 90fa388..28e107c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -24,7 +24,7 @@ package org.apache.stratos.autoscaler.registry;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-//import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
+import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.pojo.ServiceGroup;
import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
@@ -117,24 +117,6 @@ public class RegistryManager {
}
}
- public void persistPartition(Partition partition) {
- String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE + "/" + partition.getId();
- persist(partition, resourcePath);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Partition written to registry: [id] %s [provider] %s [min] %d [max] %d",
- partition.getId(), partition.getProvider(), partition.getPartitionMin(), partition.getPartitionMax()));
- }
- }
-
-// public void persistNetworkPartitionIbHolder(NetworkPartitionLbHolder nwPartitionLbHolder) {
-// String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants
-// .NETWORK_PARTITION_LB_HOLDER_RESOURCE + "/" + nwPartitionLbHolder.getNetworkPartitionId();
-// persist(nwPartitionLbHolder, resourcePath);
-// if (log.isDebugEnabled()) {
-// log.debug("NetworkPartitionContext written to registry: " + nwPartitionLbHolder.toString());
-// }
-// }
-
public void persistAutoscalerPolicy(AutoscalePolicy autoscalePolicy) {
String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE + "/" + autoscalePolicy.getId();
persist(autoscalePolicy, resourcePath);
@@ -152,7 +134,6 @@ public class RegistryManager {
}
}
-
public void persistApplication(Application application) {
try {
@@ -174,7 +155,6 @@ public class RegistryManager {
}
public String[] getApplicationResourcePaths() {
-
try {
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
@@ -192,11 +172,9 @@ public class RegistryManager {
return null;
}
}
-
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
-
return null;
}
@@ -211,8 +189,7 @@ public class RegistryManager {
Object obj = retrieve(applicationResourcePath);
if (obj != null) {
try {
- Object dataObj = Deserializer
- .deserializeFromByteArray((byte[]) obj);
+ Object dataObj = Deserializer.deserializeFromByteArray((byte[]) obj);
if (dataObj instanceof Application) {
return (Application) dataObj;
} else {
@@ -223,23 +200,72 @@ public class RegistryManager {
log.warn(msg, e);
}
}
- /*if (obj != null) {
- if (obj instanceof Application) {
- return (Application) obj;
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+ return null;
+ }
+
+ public void removeApplication(String applicationId) {
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ delete(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.APPLICATIONS_RESOURCE +
+ "/" + applicationId);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+ }
+
+ public void persistApplicationContext(ApplicationContext applicationContext) {
+
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE +
+ AutoScalerConstants.APPLICATION_CONTEXTS_RESOURCE + "/" + applicationContext.getApplicationId();
+ persist(applicationContext, resourcePath);
+ if (log.isDebugEnabled()) {
+ log.debug("Application context [" + applicationContext.getApplicationId() + "] " +
+ "persisted successfully in the Autoscaler Registry");
+ }
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+ }
+
+ public String[] getApplicationContextResourcePaths() {
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ Object obj = retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE +
+ AutoScalerConstants.APPLICATION_CONTEXTS_RESOURCE);
+
+ if (obj != null) {
+ if (obj instanceof String[]) {
+ return (String[]) obj;
} else {
- log.warn("Expected object type not found for Application " + applicationResourcePath + " in Registry");
+ log.warn("Expected object type not found for Applications in Registry");
return null;
}
- }*/
-
+ }
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
-
return null;
}
- public void removeApplication(String applicationId) {
+ public ApplicationContext getApplicationContext(String applicationId) {
try {
PrivilegedCarbonContext.startTenantFlow();
@@ -247,13 +273,48 @@ public class RegistryManager {
carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
- delete(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.APPLICATIONS_RESOURCE +
- "/" + applicationId);
+ String applicationResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE +
+ AutoScalerConstants.APPLICATION_CONTEXTS_RESOURCE + "/" + applicationId;
+ return (ApplicationContext) getApplicationContextByResourcePath(applicationResourcePath);
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+ }
+
+ public ApplicationContext getApplicationContextByResourcePath(String resourcePath) {
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ Object obj = retrieve(resourcePath);
+ if (obj != null) {
+ try {
+ return (ApplicationContext) Deserializer.deserializeFromByteArray((byte[]) obj);
+ } catch (Exception e) {
+ log.error("Could not deserialize application context", e);
+ }
+ }
+ return null;
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
+ }
+ public void removeApplicationContext(String applicationId) {
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ delete(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.APPLICATION_CONTEXTS_RESOURCE +
+ "/" + applicationId);
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
}
public void persistServiceGroup(ServiceGroup servicegroup) {
@@ -324,39 +385,6 @@ public class RegistryManager {
return partitionList;
}
-// public List<NetworkPartitionLbHolder> retrieveNetworkPartitionLbHolders() {
-// List<NetworkPartitionLbHolder> nwPartitionLbHolderList = new ArrayList<NetworkPartitionLbHolder>();
-// RegistryManager registryManager = RegistryManager.getInstance();
-// String[] partitionsResourceList = (String[]) registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE +
-// AutoScalerConstants.NETWORK_PARTITION_LB_HOLDER_RESOURCE);
-//
-// if (partitionsResourceList != null) {
-// NetworkPartitionLbHolder nwPartitionLbHolder;
-// for (String resourcePath : partitionsResourceList) {
-// Object serializedObj = registryManager.retrieve(resourcePath);
-// if (serializedObj != null) {
-// try {
-//
-// Object dataObj = Deserializer.deserializeFromByteArray((byte[]) serializedObj);
-// if (dataObj instanceof NetworkPartitionLbHolder) {
-// nwPartitionLbHolder = (NetworkPartitionLbHolder) dataObj;
-// if (log.isDebugEnabled()) {
-// log.debug(String.format("NetworkPartitionLbHolder read from registry: " + nwPartitionLbHolder.toString()));
-// }
-// nwPartitionLbHolderList.add(nwPartitionLbHolder);
-// } else {
-// return null;
-// }
-// } catch (Exception e) {
-// String msg = "Unable to retrieve data from Registry. Hence, any historical NetworkPartitionLbHolder will not get reflected.";
-// log.warn(msg, e);
-// }
-// }
-// }
-// }
-// return nwPartitionLbHolderList;
-// }
-
public List<AutoscalePolicy> retrieveASPolicies() {
List<AutoscalePolicy> asPolicyList = new ArrayList<AutoscalePolicy>();
RegistryManager registryManager = RegistryManager.getInstance();
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
index f5fede9..ff4959f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
@@ -40,6 +40,7 @@ public final class AutoScalerConstants {
public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
public static final String DEPLOYMENT_POLICY_RESOURCE = "/policies/deploymentPolicies";
public static final String APPLICATIONS_RESOURCE = "/applications";
+ public static final String APPLICATION_CONTEXTS_RESOURCE = "/applicationContexts";
/**
* Cluster monitoring interval
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index c58eedc..dbf36bc 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -207,30 +207,30 @@ public class CloudControllerUtil {
public static CartridgeInfo toCartridgeInfo(Cartridge cartridge) {
- CartridgeInfo carInfo = new CartridgeInfo();
- carInfo.setType(cartridge.getType());
- carInfo.setDisplayName(cartridge.getDisplayName());
- carInfo.setDescription(cartridge.getDescription());
- carInfo.setHostName(cartridge.getHostName());
- carInfo.setDeploymentDirs(cartridge.getDeploymentDirs());
- carInfo.setProvider(cartridge.getProvider());
- carInfo.setCategory(cartridge.getCategory());
- carInfo.setVersion(cartridge.getVersion());
- carInfo.setMultiTenant(cartridge.isMultiTenant());
- carInfo.setBaseDir(cartridge.getBaseDir());
- carInfo.setLbConfig(cartridge.getLbConfig());
- carInfo.setDefaultAutoscalingPolicy(cartridge.getDefaultAutoscalingPolicy());
- carInfo.setDefaultDeploymentPolicy(cartridge.getDefaultDeploymentPolicy());
- carInfo.setPortMappings(cartridge.getPortMappings()
- .toArray(new PortMapping[cartridge.getPortMappings()
- .size()]));
- carInfo.setAppTypes(cartridge.getAppTypeMappings()
- .toArray(new AppType[cartridge.getAppTypeMappings()
- .size()]));
- carInfo.setServiceGroup(cartridge.getServiceGroup());
+ CartridgeInfo cartridgeInfo = new CartridgeInfo();
+ cartridgeInfo.setType(cartridge.getType());
+ cartridgeInfo.setDisplayName(cartridge.getDisplayName());
+ cartridgeInfo.setDescription(cartridge.getDescription());
+ cartridgeInfo.setHostName(cartridge.getHostName());
+ cartridgeInfo.setDeploymentDirs(cartridge.getDeploymentDirs());
+ cartridgeInfo.setProvider(cartridge.getProvider());
+ cartridgeInfo.setCategory(cartridge.getCategory());
+ cartridgeInfo.setVersion(cartridge.getVersion());
+ cartridgeInfo.setMultiTenant(cartridge.isMultiTenant());
+ cartridgeInfo.setBaseDir(cartridge.getBaseDir());
+ cartridgeInfo.setLbConfig(cartridge.getLbConfig());
+ cartridgeInfo.setDefaultAutoscalingPolicy(cartridge.getDefaultAutoscalingPolicy());
+ cartridgeInfo.setDefaultDeploymentPolicy(cartridge.getDefaultDeploymentPolicy());
+ cartridgeInfo.setPortMappings(cartridge.getPortMappings()
+ .toArray(new PortMapping[cartridge.getPortMappings()
+ .size()]));
+ cartridgeInfo.setAppTypes(cartridge.getAppTypeMappings()
+ .toArray(new AppType[cartridge.getAppTypeMappings()
+ .size()]));
+ cartridgeInfo.setServiceGroup(cartridge.getServiceGroup());
List<Property> propList = new ArrayList<Property>();
- carInfo.setPersistence(cartridge.getPersistence());
+ cartridgeInfo.setPersistence(cartridge.getPersistence());
for (Iterator<?> iterator = cartridge.getProperties().entrySet().iterator(); iterator.hasNext();) {
@SuppressWarnings("unchecked")
@@ -241,9 +241,9 @@ public class CloudControllerUtil {
}
Property[] props = new Property[propList.size()];
- carInfo.setProperties(propList.toArray(props));
+ cartridgeInfo.setProperties(propList.toArray(props));
- return carInfo;
+ return cartridgeInfo;
}
public static void sleep(long time){
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/ApplicationBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/ApplicationBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/ApplicationBean.java
index 7eb94e5..d64eb23 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/ApplicationBean.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/ApplicationBean.java
@@ -11,13 +11,14 @@ import java.util.List;
@XmlRootElement(name="applications")
public class ApplicationBean {
private String id;
+ private String name;
+ private String description;
private String tenantDomain;
private String tenantAdminUsername;
private List<GroupBean> groups = null;
private List<Cluster> clusters = null;
private List<Instance> instances;
-
public ApplicationBean(){
this.setGroups(new ArrayList<GroupBean>());
this.setClusters(new ArrayList<Cluster>());
@@ -26,10 +27,30 @@ public class ApplicationBean {
this.getGroups().add(groupBean);
}
+ public String getId() {
+ return id;
+ }
+
public void setId(String id) {
this.id = id;
}
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
public void setTenantDomain(String tenantDomain) {
this.tenantDomain = tenantDomain;
}
@@ -38,10 +59,6 @@ public class ApplicationBean {
this.tenantAdminUsername = tenantAdminUsername;
}
- public String getId() {
- return id;
- }
-
public String getTenantDomain() {
return tenantDomain;
}
@@ -49,14 +66,15 @@ public class ApplicationBean {
public String getTenantAdminUsername() {
return tenantAdminUsername;
}
+
public List<Instance> getInstances() {
return instances;
}
- public void setInstances(List<Instance> instances) {
+
+ public void setInstances(List<Instance> instances) {
this.instances = instances;
}
-
public List<GroupBean> getGroups() {
return groups;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
index 545dcf5..394fd1f 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/AutoscalerServiceClient.java
@@ -96,7 +96,7 @@ public class AutoscalerServiceClient {
throws RemoteException {
org.apache.stratos.autoscaler.stub.autoscale.policy.AutoscalePolicy[] autoscalePolicies;
- autoscalePolicies = stub.getAllAutoScalingPolicy();
+ autoscalePolicies = stub.getAutoScalingPolicies();
return autoscalePolicies;
}
@@ -110,29 +110,6 @@ public class AutoscalerServiceClient {
return autoscalePolicy;
}
- public org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy[] getDeploymentPolicies()
- throws RemoteException {
-
- org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy[] deploymentPolicies;
- deploymentPolicies = stub.getAllDeploymentPolicies();
-
- return deploymentPolicies;
- }
-
- public org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy[] getDeploymentPolicies(
- String cartridgeType) throws RemoteException {
-
- org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy[] deploymentPolicies;
- deploymentPolicies = stub
- .getValidDeploymentPoliciesforCartridge(cartridgeType);
-
- return deploymentPolicies;
- }
-
- public void unDeployDeploymentPolicy(String applicationId) throws RemoteException {
- stub.undeployDeploymentPolicy(applicationId);
- }
-
public org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy getDeploymentPolicy(String deploymentPolicyId) throws RemoteException {
org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy deploymentPolicy;
@@ -141,25 +118,32 @@ public class AutoscalerServiceClient {
return deploymentPolicy;
}
- public String addDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws RemoteException,
- AutoScalerServiceInvalidPolicyExceptionException {
+ public void addApplication(ApplicationContext applicationContext) throws AutoScalerServiceApplicationDefinitionExceptionException, RemoteException {
+ stub.addApplication(applicationContext);
+ }
- return stub.addDeploymentPolicy(deploymentPolicy);
+ public ApplicationContext getApplication(String applicationId) throws RemoteException {
+ return stub.getApplication(applicationId);
+ }
+ public ApplicationContext[] getApplications() throws RemoteException {
+ return stub.getApplications();
}
-
- public boolean deployDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws RemoteException,
- AutoScalerServiceInvalidPolicyExceptionException {
- return stub.deployDeploymentPolicy(deploymentPolicy);
+ public boolean deployApplication(String applicationId, DeploymentPolicy deploymentPolicy) throws RemoteException,
+ AutoScalerServiceInvalidPolicyExceptionException, AutoScalerServiceApplicationDefinitionExceptionException {
- }
+ return stub.deployApplication(applicationId, deploymentPolicy);
- public boolean updateDeploymentPolicy(DeploymentPolicy deploymentPolicy) throws RemoteException,
- AutoScalerServiceInvalidPolicyExceptionException {
+ }
- return stub.updateDeploymentPolicy(deploymentPolicy);
+ public void undeployApplication(String applicationId) throws
+ AutoScalerServiceApplicationDefinitionExceptionException, RemoteException {
+ stub.undeployApplication(applicationId);
+ }
+ public void deleteApplication(String applicationId) throws RemoteException {
+ stub.deleteApplication(applicationId);
}
public boolean deployAutoscalingPolicy(AutoscalePolicy autoScalePolicy) throws RemoteException,
@@ -186,16 +170,6 @@ public class AutoscalerServiceClient {
stub.deployServiceGroup(serviceGroup);
}
- public void deployApplication(ApplicationContext applicationContext) throws
- AutoScalerServiceApplicationDefinitionExceptionException, RemoteException {
- stub.deployApplicationDefinition(applicationContext);
- }
-
- public void undeployApplication(String applicationId, int tenantId, String tenantDomain) throws
- AutoScalerServiceApplicationDefinitionExceptionException, RemoteException {
- stub.unDeployApplicationDefinition(applicationId, tenantId, tenantDomain);
- }
-
public void updateClusterMonitor(String clusterId, Properties properties) throws RemoteException, AutoScalerServiceInvalidArgumentExceptionException {
stub.updateClusterMonitor(clusterId, ApplicationManagementUtil.toAutoscalerStubProperties(properties));
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ApplicationDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ApplicationDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ApplicationDefinition.java
index 2a115e5..9701c34 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ApplicationDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ApplicationDefinition.java
@@ -30,11 +30,9 @@ public class ApplicationDefinition implements Serializable {
private static final long serialVersionUID = -2829206180707597651L;
private String applicationId;
-
private String alias;
-
private ComponentDefinition components;
-
+ private String status;
private List<PropertyBean> property;
public String getApplicationId() {
@@ -61,12 +59,19 @@ public class ApplicationDefinition implements Serializable {
this.components = components;
}
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
public List<PropertyBean> getProperty() {
return property;
}
public void setProperty(List<PropertyBean> property) {
this.property = property;
- }
-
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
index b8e3ee3..6b01ddb 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
@@ -36,6 +36,8 @@ public class Application extends ParentComponent<ApplicationInstance> {
private static final long serialVersionUID = -5092959597171649688L;
// Unique id for the Application, defined in Application Definition
private String id;
+ private String name;
+ private String description;
// Key used for authentication (with metadata service, etc.)
private String key;
// tenant id
@@ -136,4 +138,20 @@ public class Application extends ParentComponent<ApplicationInstance> {
return null;
}
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40.java
index 3cb5f24..81be753 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40.java
@@ -167,10 +167,10 @@ public class StratosApiV40 extends AbstractApi {
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
@SuperTenantService(true)
- public StratosApiResponse deployDeploymentPolicyDefinition (DeploymentPolicy deploymentPolicy)
+ public Response deployDeploymentPolicyDefinition(DeploymentPolicy deploymentPolicy)
throws RestAPIException {
-
- return StratosApiV40Utils.deployDeploymentPolicy(deploymentPolicy);
+ // Not supported in 4.1.0
+ return Response.status(Response.Status.GONE).build();
}
@GET
@@ -178,9 +178,9 @@ public class StratosApiV40 extends AbstractApi {
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public Partition[] getPartitions () throws RestAPIException {
-
- return StratosApiV40Utils.getAvailablePartitions();
+ public Response getPartitions() throws RestAPIException {
+ // Not supported in 4.1.0
+ return Response.status(Response.Status.GONE).build();
}
@GET
@@ -252,9 +252,9 @@ public class StratosApiV40 extends AbstractApi {
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public DeploymentPolicy[] getDeploymentPolicies () throws RestAPIException {
-
- return StratosApiV40Utils.getDeploymentPolicies();
+ public Response getDeploymentPolicies() throws RestAPIException {
+ // Not supported in 4.1.0
+ return Response.status(Response.Status.GONE).build();
}
@GET
@@ -262,10 +262,10 @@ public class StratosApiV40 extends AbstractApi {
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public DeploymentPolicy getDeploymentPolicies (@PathParam("deploymentPolicyId") String deploymentPolicyId)
+ public Response getDeploymentPolicies(@PathParam("deploymentPolicyId") String deploymentPolicyId)
throws RestAPIException {
-
- return StratosApiV40Utils.getDeploymentPolicy(deploymentPolicyId);
+ // Not supported in 4.1.0
+ return Response.status(Response.Status.GONE).build();
}
@GET
@@ -273,10 +273,10 @@ public class StratosApiV40 extends AbstractApi {
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public DeploymentPolicy[] getValidDeploymentPolicies (@PathParam("cartridgeType") String cartridgeType)
+ public Response getValidDeploymentPolicies(@PathParam("cartridgeType") String cartridgeType)
throws RestAPIException {
-
- return StratosApiV40Utils.getDeploymentPolicies(cartridgeType);
+ // Not supported in 4.1.0
+ return Response.status(Response.Status.GONE).build();
}
@GET
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
index 1ab2c33..d129da0 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV40Utils.java
@@ -225,35 +225,6 @@ public class StratosApiV40Utils {
return stratosApiResponse;
}
- public static StratosApiResponse deployDeploymentPolicy(
- org.apache.stratos.common.beans.autoscaler.policy.deployment.DeploymentPolicy deploymentPolicyBean)
- throws RestAPIException {
-
- String policyId = null;
-
- AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
- if (autoscalerServiceClient != null) {
-
- DeploymentPolicy deploymentPolicy = PojoConverter.convetToASDeploymentPolicyPojo(deploymentPolicyBean);
-
- try {
- policyId = autoscalerServiceClient.addDeploymentPolicy(deploymentPolicy);
- } catch (RemoteException e) {
- log.error(e.getMessage(), e);
- throw new RestAPIException(e.getMessage(), e);
- } catch (AutoScalerServiceInvalidPolicyExceptionException e) {
- String message = e.getFaultMessage().getInvalidPolicyException().getMessage();
- log.error(message, e);
- throw new RestAPIException(message, e);
- }
-
- }
-
- StratosApiResponse stratosApiResponse = new StratosApiResponse();
- stratosApiResponse.setMessage("Successfully deployed deployment policy definition with type " + policyId);
- return stratosApiResponse;
- }
-
private static CloudControllerServiceClient getCloudControllerServiceClient () throws RestAPIException {
try {
@@ -394,52 +365,6 @@ public class StratosApiV40Utils {
return PojoConverter.populateAutoscalePojo(autoscalePolicy);
}
- public static org.apache.stratos.common.beans.autoscaler.policy.deployment.DeploymentPolicy[]
- getDeploymentPolicies () throws RestAPIException {
-
- DeploymentPolicy [] deploymentPolicies = null;
- AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
- if (autoscalerServiceClient != null) {
- try {
- deploymentPolicies = autoscalerServiceClient.getDeploymentPolicies();
- } catch (RemoteException e) {
- String errorMsg = "Error getting available deployment policies. Cause : " + e.getMessage();
- log.error(errorMsg, e);
- throw new RestAPIException(errorMsg, e);
- }
- }
-
-
-
- return PojoConverter.populateDeploymentPolicyPojos(deploymentPolicies);
- }
-
- public static org.apache.stratos.common.beans.autoscaler.policy.deployment.DeploymentPolicy[]
- getDeploymentPolicies (String cartridgeType) throws RestAPIException {
-
- DeploymentPolicy [] deploymentPolicies = null;
- AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
- if (autoscalerServiceClient != null) {
- try {
- deploymentPolicies = autoscalerServiceClient.getDeploymentPolicies(cartridgeType);
-
- } catch (RemoteException e) {
- String errorMsg = "Error while getting available deployment policies for cartridge type " +
- cartridgeType+". Cause: "+e.getMessage();;
- log.error(errorMsg, e);
- throw new RestAPIException(errorMsg, e);
- }
- }
-
- if(deploymentPolicies.length == 0) {
- String errorMsg = "Cannot find any matching deployment policy for Cartridge [type] "+cartridgeType;
- log.error(errorMsg);
- throw new RestAPIException(errorMsg);
- }
-
- return PojoConverter.populateDeploymentPolicyPojos(deploymentPolicies);
- }
-
public static org.apache.stratos.common.beans.autoscaler.policy.deployment.DeploymentPolicy
getDeploymentPolicy(String deploymentPolicyId) throws RestAPIException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbcf3847/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index c44b5b0..c8ab6a1 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -323,8 +323,56 @@ public class StratosApiV41 extends AbstractApi {
return Response.noContent().build();
}
- // API methods for application deployments
-
+ // API methods for applications
+
+ /**
+ * Add application
+ * @param applicationDefinition
+ * @return
+ * @throws RestAPIException
+ */
+ @POST
+ @Path("/applications")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/admin/manage/add/application")
+ public Response addApplication(ApplicationDefinition applicationDefinition)
+ throws RestAPIException {
+ StratosApiV41Utils.addApplication(applicationDefinition, getConfigContext(), getUsername(), getTenantDomain());
+ URI url = uriInfo.getAbsolutePathBuilder().path(applicationDefinition.getApplicationId()).build();
+ return Response.created(url).build();
+ }
+
+ /**
+ * Return applications
+ * @return
+ * @throws RestAPIException
+ */
+ @GET
+ @Path("/applications")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/admin/manage/list/applications")
+ public Response getApplications()
+ throws RestAPIException {
+ List<ApplicationDefinition> applicationDefinitions = StratosApiV41Utils.getApplications();
+ return Response.ok(applicationDefinitions).build();
+ }
+
+ @GET
+ @Path("/applications/{applicationId}")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/admin/manage/list/applications")
+ public Response getApplication(@PathParam("applicationId") String applicationId)
+ throws RestAPIException {
+ ApplicationDefinition applicationDefinition = StratosApiV41Utils.getApplication(applicationId);
+ if(applicationDefinition == null) {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ }
+ return Response.ok(applicationDefinition).build();
+ }
+
/**
* Deploy application.
*
@@ -333,14 +381,13 @@ public class StratosApiV41 extends AbstractApi {
* @throws RestAPIException the rest api exception
*/
@POST
- @Path("/applicationDeployments")
+ @Path("/application/{applicationId}/deploy")
@Produces("application/json")
@Consumes("application/json")
- @AuthorizationAction("/permission/admin/manage/add/deploymentPolicy")
- public Response deployApplication(DeploymentPolicy deploymentPolicy)
+ @AuthorizationAction("/permission/admin/manage/deploy/application")
+ public Response deployApplication(@PathParam("applicationId") String applicationId, DeploymentPolicy deploymentPolicy)
throws RestAPIException {
- StratosApiV41Utils.deployApplication(deploymentPolicy);
- //URI url = uriInfo.getAbsolutePathBuilder().path(policyId).build();
+ StratosApiV41Utils.deployApplication(applicationId, deploymentPolicy);
return Response.accepted().build();
}
@@ -352,7 +399,7 @@ public class StratosApiV41 extends AbstractApi {
* @throws RestAPIException the rest api exception
*/
@DELETE
- @Path("/applicationDeployments/{applicationId}")
+ @Path("/applications/{applicationId}/undeploy")
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/admin/manage/add/deploymentPolicy")
@@ -361,24 +408,50 @@ public class StratosApiV41 extends AbstractApi {
StratosApiV41Utils.undeployApplication(applicationId);
return Response.accepted().build();
}
-
- // API methods for deployment policies
/**
- * Gets the deployment policies.
+ * This API resource provides information about the application denoted by the given appId. Details includes,
+ * Application details, top level cluster details, details of the group and sub groups.
*
- * @return the deployment policies
- * @throws RestAPIException the rest api exception
+ * @param applicationId Id of the application.
+ * @return Json representing the application details with 200 as HTTP status. HTTP 404 is returned when there is
+ * no application with given Id.
+ * @throws RestAPIException is thrown in case of failure occurs.
*/
@GET
- @Path("/deploymentPolicies")
+ @Path("/applications/{applicationId}/runtime")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/list/applicationRuntimes")
+ public Response getApplicationRuntime(@PathParam("applicationId") String applicationId) throws RestAPIException {
+ ApplicationBean applicationRuntime = StratosApiV41Utils.getApplicationRuntime(applicationId);
+ if (applicationRuntime == null) {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ } else {
+ return Response.ok().entity(applicationRuntime).build();
+ }
+ }
+
+ /**
+ * Delete an application.
+ *
+ * @param applicationId the application id
+ * @return the response
+ * @throws RestAPIException the rest api exception
+ */
+ @DELETE
+ @Path("/applications/{applicationId}")
@Produces("application/json")
@Consumes("application/json")
- @AuthorizationAction("/permission/admin/manage/view/deploymentPolicy")
- public Response getDeploymentPolicies() throws RestAPIException {
- return Response.ok().entity(StratosApiV41Utils.getDeploymentPolicies()).build();
+ @AuthorizationAction("/permission/protected/manage/delete/application")
+ @SuperTenantService(true)
+ public Response deleteApplication(@PathParam("applicationId") String applicationId)
+ throws RestAPIException {
+ StratosApiV41Utils.deleteApplication(applicationId);
+ return Response.noContent().build();
}
+ // API methods for deployment policies
+
/**
* Gets a specific deployment policy.
*
@@ -412,27 +485,6 @@ public class StratosApiV41 extends AbstractApi {
throws RestAPIException {
return Response.ok().entity(StratosApiV41Utils.getPartitionGroups(deploymentPolicyId)).build();
}
-
-// @GET
-// @Path("/deploymentPolicies/{deploymentPolicyId}/partitionGroup/{partitionGroupId}")
-// @Produces("application/json")
-// @Consumes("application/json")
-// @AuthorizationAction("/permission/admin/manage/view/partition")
-// public Response getPartitionGroupForDeploymentPolicy(@PathParam("deploymentPolicyId") String deploymentPolicyId,
-// @PathParam("partitionGroupId") String partitionGroupId) throws RestAPIException {
-// return Response.ok().entity(StratosApiV41Utils.getPartitionsOfGroup(deploymentPolicyId, partitionGroupId)).build();
-// }
-
-// @GET
-// @Path("/deploymentPolicies/{deploymentPolicyId}/partition")
-// @Produces("application/json")
-// @Consumes("application/json")
-// @AuthorizationAction("/permission/admin/manage/view/partition")
-// public Response getPartitionsForDeploymentPolicy(@PathParam("deploymentPolicyId") String deploymentPolicyId)
-// throws RestAPIException {
-//
-// return Response.ok().entity(StratosApiV41Utils.getPartitionsOfDeploymentPolicy(deploymentPolicyId)).build();
-// }
// API methods for autoscaling policies
@@ -511,90 +563,6 @@ public class StratosApiV41 extends AbstractApi {
return Response.ok().build();
}
- // API methods for applications
-
- /**
- * Gets details of all the applications.
- *
- * @return the applications
- * @throws RestAPIException the rest api exception
- */
- @GET
- @Path("/applications")
- @Consumes("application/json")
- @AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public Response getApplications() throws RestAPIException {
- ApplicationBean[] applications = StratosApiV41Utils.getApplications();
- if (applications == null) {
- return Response.status(Response.Status.NOT_FOUND).build();
- } else {
- return Response.ok().entity(applications).build();
- }
- }
-
- /**
- * This API resource provides information about the application denoted by the given appId. Details includes,
- * Application details, top level cluster details, details of the group and sub groups.
- *
- * @param applicationId Id of the application.
- * @return Json representing the application details with 200 as HTTP status. HTTP 404 is returned when there is
- * no application with given Id.
- * @throws RestAPIException is thrown in case of failure occurs.
- */
- @GET
- @Path("/applications/{applicationId}")
- @Consumes("application/json")
- @AuthorizationAction("/permission/protected/manage/monitor/tenants")
- public Response getApplication(@PathParam("applicationId") String applicationId) throws RestAPIException {
- ApplicationBean application = StratosApiV41Utils.getApplication(applicationId);
- if (application == null) {
- return Response.status(Response.Status.NOT_FOUND).build();
- } else {
- return Response.ok().entity(application).build();
- }
- }
-
- /**
- * Creates the application definition.
- *
- * @param applicationDefinitionBean the application definition bean
- * @return the response
- * @throws RestAPIException the rest api exception
- */
- @POST
- @Path("/applications")
- @Produces("application/json")
- @Consumes("application/json")
- @AuthorizationAction("/permission/protected/manage/monitor/tenants")
- @SuperTenantService(true)
- public Response createApplicationDefinition(ApplicationDefinition applicationDefinitionBean)
- throws RestAPIException {
- StratosApiV41Utils.createApplicationDefinition(applicationDefinitionBean, getConfigContext(),
- getUsername(), getTenantDomain());
- URI url = uriInfo.getAbsolutePathBuilder().path(applicationDefinitionBean.getApplicationId()).build();
- return Response.created(url).build();
- }
-
- /**
- * Removes the application definition.
- *
- * @param applicationId the application id
- * @return the response
- * @throws RestAPIException the rest api exception
- */
- @DELETE
- @Path("/applications/{applicationId}")
- @Produces("application/json")
- @Consumes("application/json")
- @AuthorizationAction("/permission/protected/manage/monitor/tenants")
- @SuperTenantService(true)
- public Response deleteApplicationDefinition(@PathParam("applicationId") String applicationId)
- throws RestAPIException {
- StratosApiV41Utils.removeApplicationDefinition(applicationId, getConfigContext(), getUsername(),
- getTenantDomain());
- return Response.noContent().build();
- }
-
// API methods for subscriptions
/**