Validation to restrict multi-tenant applications to be deployed only by super 
tenant in deployApplication method


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/52c26b2a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/52c26b2a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/52c26b2a

Branch: refs/heads/master
Commit: 52c26b2a5db53804899a0b2aa0dc271a121a9284
Parents: b4ddbe5
Author: Vishanth <[email protected]>
Authored: Thu Jan 29 17:00:37 2015 +0530
Committer: Imesh Gunaratne <[email protected]>
Committed: Thu Jan 29 18:20:28 2015 +0530

----------------------------------------------------------------------
 .../stratos/rest/endpoint/api/StratosApiV41Utils.java    | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/52c26b2a/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 76be4ba..153b3f6 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
@@ -70,6 +70,7 @@ import org.apache.stratos.messaging.domain.application.Group;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import 
org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
+import org.apache.stratos.rest.endpoint.annotation.SuperTenantService;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 import org.apache.stratos.rest.endpoint.util.converter.ObjectConverter;
 import org.wso2.carbon.context.CarbonContext;
@@ -1024,7 +1025,15 @@ public class StratosApiV41Utils {
                 throw new RestAPIException(message);
             }
 
-                       validateDeploymentPolicy(deploymentPolicy);
+            ApplicationBean applicationBean = getApplication(applicationId);
+            int tenantId = 
CarbonContext.getThreadLocalCarbonContext().getTenantId();
+            if (applicationBean.isMultiTenant() && (tenantId != -1234)) {
+                String message = String.format("Multi-tenant applications can 
only be deployed by super tenant: [application-id] %s", applicationId);
+                log.error(message);
+                throw new RestAPIException(message);
+            }
+
+            validateDeploymentPolicy(deploymentPolicy);
             
org.apache.stratos.autoscaler.stub.deployment.policy.DeploymentPolicy 
stubDeploymentPolicy =
                     
ObjectConverter.convetToASDeploymentPolicyPojo(applicationId, deploymentPolicy);
             autoscalerServiceClient.deployApplication(applicationId, 
stubDeploymentPolicy);

Reply via email to