Modifying the application context with UUID
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a5e75b41 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a5e75b41 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a5e75b41 Branch: refs/heads/tenant-isolation Commit: a5e75b4190c10c406a06c7a7549eead7a895fa17 Parents: eac4c96 Author: Dinithi <[email protected]> Authored: Thu Jul 9 14:31:54 2015 +0530 Committer: Dinithi <[email protected]> Committed: Thu Jul 9 14:31:54 2015 +0530 ---------------------------------------------------------------------- .../autoscaler/context/AutoscalerContext.java | 11 + .../autoscaler/pojo/policy/PolicyManager.java | 2 +- .../autoscaler/services/AutoscalerService.java | 8 + .../services/impl/AutoscalerServiceImpl.java | 5 + .../common/client/AutoscalerServiceClient.java | 4 + .../domain/application/Application.java | 21 +- .../rest/endpoint/api/StratosApiV41Utils.java | 10 +- .../util/converter/ObjectConverter.java | 6 +- .../src/main/resources/AutoscalerService.wsdl | 779 ++++++++++--------- 9 files changed, 471 insertions(+), 375 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/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 8fd106f..8ad6c27 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 @@ -181,6 +181,17 @@ public class AutoscalerContext { return applicationContextMap.get(applicationId); } + public ApplicationContext getApplicationContextByTenant(String applicationId, int tenantId) { + ApplicationContext applicationContext = null; + for (ApplicationContext applicationContext1 : getApplicationContexts()) { + if (applicationContext1.getTenantId() == tenantId && applicationContext1.getApplicationId().equals + (applicationId)) { + applicationContext = applicationContext1; + } + } + return applicationContext; + } + public Collection<ApplicationContext> getApplicationContexts() { return applicationContextMap.values(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java index 07cde0d..a5070b8 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java @@ -434,7 +434,7 @@ public class PolicyManager { } /** - * Returns the deployment policy to which the specified id is mapped or null + * Returns the application policy to which the specified id is mapped or null * * @param id Id of the deployment policy * @return http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java index c7e2264..eee9cc7 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java @@ -116,6 +116,14 @@ public interface AutoscalerService { public ApplicationContext getApplication(String applicationId); /** + * Get an application + * + * @param applicationId + * @param tenantId + */ + public ApplicationContext getApplicationByTenant(String applicationId, int tenantId); + + /** * Check if the application exists * * @param applicationId http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java index c568a32..cb266d7 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java @@ -298,6 +298,11 @@ public class AutoscalerServiceImpl implements AutoscalerService { } @Override + public ApplicationContext getApplicationByTenant(String applicationId, int tenantId) { + return AutoscalerContext.getInstance().getApplicationContextByTenant(applicationId, tenantId); + } + + @Override public boolean existApplication(String applicationId) { return AutoscalerContext.getInstance().getApplicationContext(applicationId) != null; } http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java index 4911fd4..4922cea 100644 --- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java +++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java @@ -113,6 +113,10 @@ public class AutoscalerServiceClient { return stub.getApplication(applicationId); } + public ApplicationContext getApplicationByTenant(String applicationId, int tenantId) throws RemoteException { + return stub.getApplicationByTenant(applicationId, tenantId); + } + public boolean existApplication(String applicationId) throws RemoteException { return stub.existApplication(applicationId); } http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java index 0a0cb67..a3f09d2 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java @@ -35,6 +35,7 @@ public class Application extends ParentComponent<ApplicationInstance> { private static final long serialVersionUID = -5092959597171649688L; // Unique id for the Application, defined in Application Definition + private String uuid; private String id; private String name; private String description; @@ -49,22 +50,30 @@ public class Application extends ParentComponent<ApplicationInstance> { // Life cycle state manager //protected LifeCycleStateManager<ApplicationStatus> applicationStateManager; - // application policy id + // application policy uuid private String applicationPolicyId; - public Application(String id) { + public Application(String uuid) { super(); - this.id = id; + this.uuid = uuid; this.key = RandomStringUtils.randomAlphanumeric(16); this.setInstanceIdToInstanceContextMap(new HashMap<String, ApplicationInstance>()); //this.applicationStateManager = //new LifeCycleStateManager<ApplicationStatus>(ApplicationStatus.Created, id); } - public String getUniqueIdentifier() { + public String getId() { return id; } + public void setId(String id) { + this.id = id; + } + + public String getUniqueIdentifier() { + return uuid; + } + public String getKey() { return key; } @@ -134,11 +143,11 @@ public class Application extends ParentComponent<ApplicationInstance> { } Application that = (Application) other; - return this.id.equals(that.id); + return this.uuid.equals(that.uuid); } public int hashCode() { - return id.hashCode(); + return uuid.hashCode(); } public Instance getInstanceByNetworkPartitionId(String networkPartitionId) { http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/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 de8b826..6d64759 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 @@ -1774,8 +1774,11 @@ public class StratosApiV41Utils { log.info(String.format("Starting to deploy application: [application-id] %s", applicationId)); } + PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); + int tenantId = carbonContext.getTenantId(); + AutoscalerServiceClient autoscalerServiceClient = getAutoscalerServiceClient(); - ApplicationContext application = autoscalerServiceClient.getApplication(applicationId); + ApplicationContext application = autoscalerServiceClient.getApplicationByTenant(applicationId, tenantId); if (application == null) { String message = String.format("Application not found: [application-id] %s", applicationId); @@ -1804,7 +1807,7 @@ public class StratosApiV41Utils { } ApplicationBean applicationBean = getApplication(applicationId); - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + //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", @@ -1898,8 +1901,9 @@ public class StratosApiV41Utils { */ public static ApplicationBean getApplication(String applicationId) throws RestAPIException { try { + PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext(); return ObjectConverter.convertStubApplicationContextToApplicationDefinition( - AutoscalerServiceClient.getInstance().getApplication(applicationId)); + AutoscalerServiceClient.getInstance().getApplicationByTenant(applicationId, carbonContext.getTenantId())); } catch (RemoteException e) { String message = "Could not read application: [application-id] " + applicationId; log.error(message, e); http://git-wip-us.apache.org/repos/asf/stratos/blob/a5e75b41/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java index 8322457..e7523cd 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java @@ -1111,7 +1111,8 @@ public class ObjectConverter { org.apache.stratos.autoscaler.stub.pojo.ApplicationContext applicationContext = new org.apache.stratos.autoscaler.stub.pojo.ApplicationContext(); - applicationContext.setApplicationId(applicationDefinition.getApplicationUuid()); + applicationContext.setApplicationUuid(applicationDefinition.getApplicationUuid()); + applicationContext.setApplicationId(applicationDefinition.getApplicationId()); applicationContext.setAlias(applicationDefinition.getAlias()); applicationContext.setMultiTenant(applicationDefinition.isMultiTenant()); applicationContext.setName(applicationDefinition.getName()); @@ -1151,7 +1152,8 @@ public class ObjectConverter { } ApplicationBean applicationDefinition = new ApplicationBean(); - applicationDefinition.setApplicationUuid(applicationContext.getApplicationId()); + applicationDefinition.setApplicationUuid(applicationContext.getApplicationUuid()); + applicationDefinition.setApplicationId(applicationContext.getApplicationId()); applicationDefinition.setAlias(applicationContext.getAlias()); applicationDefinition.setMultiTenant(applicationContext.getMultiTenant()); applicationDefinition.setName(applicationContext.getName());
