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