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 2015/04/09 08:46:02 UTC
stratos git commit: status validation in Application
add/remove/deploy/undeploy operations
Repository: stratos
Updated Branches:
refs/heads/master 0ebff8014 -> 8bb6c66c8
status validation in Application add/remove/deploy/undeploy operations
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8bb6c66c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8bb6c66c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8bb6c66c
Branch: refs/heads/master
Commit: 8bb6c66c89088ef2e3cce3a76f8a51885a525aee
Parents: 0ebff80
Author: Udara Liyanage <ud...@wso2.com>
Authored: Thu Apr 9 11:07:29 2015 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Thu Apr 9 12:15:00 2015 +0530
----------------------------------------------------------------------
.../rest/endpoint/api/StratosApiV41.java | 23 ++++++--
.../rest/endpoint/api/StratosApiV41Utils.java | 55 ++++++++++++--------
2 files changed, 51 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/8bb6c66c/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 34d353c..0e31605 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
@@ -595,9 +595,9 @@ public class StratosApiV41 extends AbstractApi {
@Produces("application/json")
@Consumes("application/json")
@AuthorizationAction("/permission/protected/manage/addApplication")
- public Response addApplication(
- ApplicationBean applicationDefinition) throws RestAPIException {
+ public Response addApplication(ApplicationBean applicationDefinition) throws RestAPIException {
StratosApiV41Utils.addApplication(applicationDefinition, getConfigContext(), getUsername(), getTenantDomain());
+
URI url = uriInfo.getAbsolutePathBuilder().path(applicationDefinition.getApplicationId()).build();
return Response.created(url).entity(new SuccessResponseBean(Response.Status.CREATED.getStatusCode(),
String.format("Application added successfully: [application] %s",
@@ -894,6 +894,16 @@ public class StratosApiV41 extends AbstractApi {
public Response undeployApplication(
@PathParam("applicationId") String applicationId, @QueryParam("force") @DefaultValue("false") boolean force) throws RestAPIException {
+ ApplicationBean applicationDefinition = StratosApiV41Utils.getApplication(applicationId);
+ if(applicationDefinition == null){
+ log.info(String.format("Application does not exist [application-id] ", applicationId));
+ return Response.status(Response.Status.NOT_FOUND).build();
+ }
+ if(!applicationDefinition.getStatus().equalsIgnoreCase(StratosApiV41Utils.APPLICATION_STATUS_DEPLOYED)){
+ String message = String.format("Could not undeploy since application is not in DEPLOYED status [application-id] %s [current status] %S", applicationId, applicationDefinition.getStatus());
+ log.info(message);
+ return Response.status(Response.Status.CONFLICT).entity(message).build();
+ }
StratosApiV41Utils.undeployApplication(applicationId, force);
return Response.accepted().entity(new SuccessResponseBean(Response.Status.ACCEPTED.getStatusCode(),
String.format("Application undeployed successfully: [application] %s", applicationId))).build();
@@ -941,9 +951,12 @@ public class StratosApiV41 extends AbstractApi {
if (applicationDefinition == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
- // if (StratosApiV41Utils.getApplicationRuntime(applicationId) != null) {
- // return Response.status(Response.Status.NOT_ACCEPTABLE).build();
- // }
+
+ if(!applicationDefinition.getStatus().equalsIgnoreCase(StratosApiV41Utils.APPLICATION_STATUS_CREATED)){
+ return Response.status(Response.Status.CONFLICT).entity(new SuccessResponseBean(Response.Status.CONFLICT.getStatusCode(),
+ String.format("Could not delete since application is not in CREATED state : [application] %s [current-status] %S", applicationId, applicationDefinition.getStatus()))).build();
+ }
+
StratosApiV41Utils.removeApplication(applicationId);
return Response.ok().entity(new SuccessResponseBean(Response.Status.OK.getStatusCode(),
String.format("Application deleted successfully: [application] %s", applicationId))).build();
http://git-wip-us.apache.org/repos/asf/stratos/blob/8bb6c66c/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index bfbb4ae..162922c 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -25,17 +25,14 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.stub.*;
import org.apache.stratos.autoscaler.stub.deployment.policy.ApplicationPolicy;
-import org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy;
import org.apache.stratos.autoscaler.stub.pojo.ApplicationContext;
import org.apache.stratos.autoscaler.stub.pojo.ServiceGroup;
import org.apache.stratos.cloud.controller.stub.*;
-import org.apache.stratos.cloud.controller.stub.domain.*;
+import org.apache.stratos.cloud.controller.stub.domain.Cartridge;
+import org.apache.stratos.cloud.controller.stub.domain.Persistence;
+import org.apache.stratos.cloud.controller.stub.domain.Volume;
import org.apache.stratos.common.beans.PropertyBean;
-import org.apache.stratos.common.beans.application.ApplicationBean;
-import org.apache.stratos.common.beans.application.ApplicationNetworkPartitionIdListBean;
-import org.apache.stratos.common.beans.application.ComponentBean;
-import org.apache.stratos.common.beans.application.GroupBean;
-import org.apache.stratos.common.beans.application.GroupReferenceBean;
+import org.apache.stratos.common.beans.application.*;
import org.apache.stratos.common.beans.application.domain.mapping.ApplicationDomainMappingsBean;
import org.apache.stratos.common.beans.application.domain.mapping.DomainMappingBean;
import org.apache.stratos.common.beans.application.signup.ApplicationSignUpBean;
@@ -87,6 +84,7 @@ public class StratosApiV41Utils {
public static final String VOLUME_ID = "volume.id";
public static final String TENANT_RANGE_ALL = "*";
public static final String APPLICATION_STATUS_DEPLOYED = "Deployed";
+ public static final String APPLICATION_STATUS_CREATED = "Created";
private static Log log = LogFactory.getLog(StratosApiV41Utils.class);
@@ -1172,6 +1170,24 @@ public class StratosApiV41Utils {
public static void deployApplication(String applicationId, String applicationPolicyId)
throws RestAPIException {
+ if(StringUtils.isEmpty(applicationPolicyId)) {
+ String message = "Application policy id is Empty";
+ log.error(message);
+ throw new RestAPIException(message);
+ }
+
+ if(StringUtils.isEmpty(applicationPolicyId)) {
+ String message = "Application policy id is Empty";
+ log.error(message);
+ throw new RestAPIException(message);
+ }
+ if (StringUtils.isEmpty(applicationPolicyId)) {
+ String message = String.format("Application policy id cannot be null : [application-policy-id] %s. "
+ + "Are you passing application policy?", applicationPolicyId);
+ log.error(message);
+ throw new RestAPIException(message);
+ }
+
try {
if (log.isInfoEnabled()) {
log.info(String.format("Starting to deploy application: [application-id] %s", applicationId));
@@ -1180,32 +1196,24 @@ public class StratosApiV41Utils {
AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient();
ApplicationContext application = autoscalerServiceClient.getApplication(applicationId);
- if (StringUtils.isBlank(applicationId)) {
- String message ="Please specify the application id of the application";
- log.error(message);
- throw new RestAPIException(message);
- }
if(application == null) {
String message = String.format("Application is not found: [application-id] %s", applicationId);
log.error(message);
throw new RestAPIException(message);
}
- if (application.getStatus().equals(APPLICATION_STATUS_DEPLOYED)) {
- String message = String.format("Application is already deployed: [application-id] %s", applicationId);
+
+ if (application.getStatus().equalsIgnoreCase(APPLICATION_STATUS_DEPLOYED)) {
+ String message = String.format("Application is already in DEPLOYED state: [application-id] %s [current status] %s ", applicationId, application.getStatus());
log.error(message);
throw new RestAPIException(message);
}
- if(applicationPolicyId == null) {
- String message = "Application policy id is null: [application-policy-id]";
+
+ // This is a redundant state since there is only CREATED,DEPLOYED state. But this will be usefull when more status are added.
+ if (!application.getStatus().equalsIgnoreCase(APPLICATION_STATUS_CREATED)) {
+ String message = String.format("Application is not in CREATED state: [application-id] %s [current status] %s ", applicationId, application.getStatus());
log.error(message);
throw new RestAPIException(message);
}
- if (StringUtils.isBlank(applicationPolicyId)) {
- String message = String.format("Application policy id cannot be null : [application-policy-id] %s. "
- + "Are you passing application policy?", applicationPolicyId);
- log.error(message);
- throw new RestAPIException(message);
- }
ApplicationBean applicationBean = getApplication(applicationId);
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
@@ -1268,6 +1276,9 @@ public class StratosApiV41Utils {
public static void removeApplication(String applicationId) throws RestAPIException {
try {
+
+ log.info(String.format("Starting to remove application [application-id %s", applicationId));
+
AutoscalerServiceClient asServiceClient = getAutoscalerServiceClient();
ApplicationBean application = ObjectConverter.convertStubApplicationContextToApplicationDefinition(asServiceClient.getApplication(applicationId));