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));