You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2013/12/07 18:23:53 UTC
git commit: Updated adc manager to publish tenant subscribed and
un-subscribed events
Updated Branches:
refs/heads/master 2ef7a0025 -> 8d947038b
Updated adc manager to publish tenant subscribed and un-subscribed events
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8d947038
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8d947038
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8d947038
Branch: refs/heads/master
Commit: 8d947038b5d53164060dfe763c1223c171139a10
Parents: 2ef7a00
Author: Imesh Gunaratne <im...@apache.org>
Authored: Sat Dec 7 22:53:44 2013 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Sat Dec 7 22:53:44 2013 +0530
----------------------------------------------------------------------
.../service/ApplicationManagementService.java | 118 +++++++++++++------
1 file changed, 82 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8d947038/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
index 62a1adb..0eb2c28 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
@@ -36,6 +36,10 @@ import org.apache.stratos.adc.mgt.utils.PersistenceManager;
import org.apache.stratos.adc.mgt.utils.PolicyHolder;
import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+import org.apache.stratos.messaging.broker.publish.EventPublisher;
+import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent;
+import org.apache.stratos.messaging.util.Constants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.core.AbstractAdmin;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
@@ -54,14 +58,10 @@ import java.util.regex.Pattern;
*/
public class ApplicationManagementService extends AbstractAdmin {
-
private static final Log log = LogFactory.getLog(ApplicationManagementService.class);
- RegistryManager registryManager = new RegistryManager();
+ private RegistryManager registryManager = new RegistryManager();
private CartridgeSubscriptionManager cartridgeSubsciptionManager = new CartridgeSubscriptionManager();
- PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
- String tenantDomain = carbonContext.getTenantDomain();
-
/*
* Instantiate RepoNotificationService. Since this service is in the same
* component (org.apache.stratos.adc.mgt), a new object is created.
@@ -261,7 +261,7 @@ public class ApplicationManagementService extends AbstractAdmin {
TopologyManagementService topologyMgtService = DataHolder.getTopologyMgtService();
String[] ips = topologyMgtService.getActiveIPs(subscription.getCartridge(),
subscription.getClusterDomain(), subscription.getClusterSubdomain());
- Cartridge cartridge = ApplicationManagementUtil.populateCartridgeInfo(cartridgeInfo, subscription, ips, tenantDomain);
+ Cartridge cartridge = ApplicationManagementUtil.populateCartridgeInfo(cartridgeInfo, subscription, ips, getTenantDomain());
cartridges.add(cartridge);
}
} else {
@@ -404,13 +404,15 @@ public class ApplicationManagementService extends AbstractAdmin {
try {
connectingCartridgeSubscription = cartridgeSubsciptionManager.getCartridgeSubscription(getTenantDomain(),
dataCartridgeAlias);
-
} catch (NotSubscribedException e) {
log.error(e.getMessage(), e);
}
if (connectingCartridgeSubscription != null) {
+ // Publish tenant subscribed event
+ publishTenantSubscribedEvent(getTenantId(), connectingCartridgeSubscription.getCartridgeInfo().getType());
+
try {
- cartridgeSubsciptionManager.connectCartridges(tenantDomain, cartridgeSubscription,
+ cartridgeSubsciptionManager.connectCartridges(getTenantDomain(), cartridgeSubscription,
connectingCartridgeSubscription.getAlias());
} catch (NotSubscribedException e) {
@@ -429,6 +431,35 @@ public class ApplicationManagementService extends AbstractAdmin {
}
+ private void publishTenantSubscribedEvent(int tenantId, String serviceName) {
+ try {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing tenant subscribed event: [tenant-id] %d [service] %s", tenantId, serviceName));
+ }
+ TenantSubscribedEvent subscribedEvent = new TenantSubscribedEvent(tenantId, serviceName);
+ EventPublisher eventPublisher = new EventPublisher(Constants.TENANT_TOPIC);
+ eventPublisher.publish(subscribedEvent);
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error(String.format("Could not publish tenant subscribed event: [tenant-id] %d [service] %s", tenantId, serviceName), e);
+ }
+ }
+ }
+
+ private void publishTenantUnSubscribedEvent(int tenantId, String serviceName) {
+ try {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing tenant un-subscribed event: [tenant-id] %d [service] %s", tenantId, serviceName));
+ }
+ TenantUnSubscribedEvent event = new TenantUnSubscribedEvent(tenantId, serviceName);
+ EventPublisher eventPublisher = new EventPublisher(Constants.TENANT_TOPIC);
+ eventPublisher.publish(event);
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error(String.format("Could not publish tenant un-subscribed event: [tenant-id] %d [service] %s", tenantId, serviceName), e);
+ }
+ }
+ }
/**
* Unsubscribing the cartridge
@@ -439,19 +470,38 @@ public class ApplicationManagementService extends AbstractAdmin {
checkSuperTenant();
+ // Find subscription of alias
+ CartridgeSubscriptionInfo subscription;
+ String errorMessage = String.format("Tenant %s is not subscribed for %s", getTenantDomain(), alias);
+ try {
+ subscription = PersistenceManager.getSubscription(getTenantDomain(), alias);
+ if(subscription == null) {
+ throw new ADCException(errorMessage);
+ }
+ } catch (Exception e) {
+ throw new ADCException(errorMessage);
+ }
+
+ // Un-subscribe from cartridge
cartridgeSubsciptionManager.unsubscribeFromCartridge(getTenantDomain(), alias);
+
+ // Publish tenant un-subscribed event
+ String serviceName = subscription.getCartridge();
+ publishTenantUnSubscribedEvent(getTenantId(), serviceName);
+
+
/*CartridgeSubscriptionInfo subscription = null;
try {
- subscription = PersistenceManager.getSubscription(tenantDomain, alias);
+ subscription = PersistenceManager.getSubscription(getTenantDomain(), alias);
} catch (Exception e) {
- String msg = "Failed to get subscription for " + tenantDomain + " and alias " + alias;
+ String msg = "Failed to get subscription for " + getTenantDomain() + " and alias " + alias;
log.error(msg, e);
throw new ADCException(msg, e);
}
if (subscription == null) {
- String msg = "Tenant " + tenantDomain + " is not subscribed for " + alias;
+ String msg = "Tenant " + getTenantDomain() + " is not subscribed for " + alias;
log.error(msg);
throw new NotSubscribedException("You have not subscribed for " + alias, alias);
}
@@ -482,7 +532,7 @@ public class ApplicationManagementService extends AbstractAdmin {
}
}
- new RepositoryFactory().destroyRepository(alias, tenantDomain, getUsername());
+ new RepositoryFactory().destroyRepository(alias, getTenantDomain(), getUsername());
log.info("Repo is destroyed successfully.. ");
PersistenceManager.updateSubscriptionState(subscription.getSubscriptionId(), "UNSUBSCRIBED");
@@ -516,14 +566,14 @@ public class ApplicationManagementService extends AbstractAdmin {
String actualHost = null;
try {
- subscription = PersistenceManager.getSubscription(tenantDomain, cartridgeAlias);
+ subscription = PersistenceManager.getSubscription(getTenantDomain(), cartridgeAlias);
} catch (Exception e) {
- String msg = "Failed to get subscription for " + tenantDomain + " and alias " + cartridgeAlias;
+ String msg = "Failed to get subscription for " + getTenantDomain() + " and alias " + cartridgeAlias;
log.error(msg, e);
throw new ADCException(msg, e);
}
if (subscription == null) {
- String msg = "Tenant " + tenantDomain + " is not subscribed for " + cartridgeAlias;
+ String msg = "Tenant " + getTenantDomain() + " is not subscribed for " + cartridgeAlias;
log.error(msg);
throw new NotSubscribedException("You have not subscribed for " + cartridgeAlias, cartridgeAlias);
}
@@ -531,7 +581,7 @@ public class ApplicationManagementService extends AbstractAdmin {
try {
actualHost = getActualHost(cartridgeAlias);
registryManager.addDomainMappingToRegistry(mappedDomain, actualHost);
- log.info("Domain mapping is added for " + mappedDomain + " tenant: " + tenantDomain);
+ log.info("Domain mapping is added for " + mappedDomain + " tenant: " + getTenantDomain());
PersistenceManager.updateDomainMapping(
ApplicationManagementUtil.getTenantId(getConfigContext()), cartridgeAlias, mappedDomain);
} catch (RegistryException e) {
@@ -561,14 +611,14 @@ public class ApplicationManagementService extends AbstractAdmin {
String actualHost = null;
try {
- subscription = PersistenceManager.getSubscription(tenantDomain, cartridgeAlias);
+ subscription = PersistenceManager.getSubscription(getTenantDomain(), cartridgeAlias);
} catch (Exception e) {
- String msg = "Failed to get subscription for " + tenantDomain + " and alias " + cartridgeAlias;
+ String msg = "Failed to get subscription for " + getTenantDomain() + " and alias " + cartridgeAlias;
log.error(msg, e);
throw new ADCException(msg, e);
}
if (subscription == null) {
- String msg = "Tenant " + tenantDomain + " is not subscribed for " + cartridgeAlias;
+ String msg = "Tenant " + getTenantDomain() + " is not subscribed for " + cartridgeAlias;
log.error(msg);
throw new NotSubscribedException("You have not subscribed for " + cartridgeAlias, cartridgeAlias);
}
@@ -576,7 +626,7 @@ public class ApplicationManagementService extends AbstractAdmin {
try {
actualHost = getActualHost(cartridgeAlias);
registryManager.removeDomainMappingFromRegistry(actualHost);
- log.info("Domain mapping is removed for " + actualHost + " tenant: " + tenantDomain);
+ log.info("Domain mapping is removed for " + actualHost + " tenant: " + getTenantDomain());
PersistenceManager.updateDomainMapping(ApplicationManagementUtil.getTenantId(getConfigContext()),
cartridgeAlias, null);
} catch (RegistryException e) {
@@ -596,38 +646,34 @@ public class ApplicationManagementService extends AbstractAdmin {
// Validating subscription
try {
- subscription = PersistenceManager.getSubscription(tenantDomain, cartridgeAlias);
+ subscription = PersistenceManager.getSubscription(getTenantDomain(), cartridgeAlias);
} catch (Exception e) {
- String msg = "Failed to get subscription for " + tenantDomain + " and alias " + cartridgeAlias;
+ String msg = "Failed to get subscription for " + getTenantDomain() + " and alias " + cartridgeAlias;
log.error(msg, e);
throw new ADCException(msg, e);
}
if (subscription == null) {
- String msg = "Tenant " + tenantDomain + " is not subscribed for " + cartridgeAlias;
+ String msg = "Tenant " + getTenantDomain() + " is not subscribed for " + cartridgeAlias;
log.error(msg);
throw new NotSubscribedException("You have not subscribed for " + cartridgeAlias, cartridgeAlias);
}
try {
- repoNotificationService.notifyRepoUpdate(tenantDomain, cartridgeAlias);
+ repoNotificationService.notifyRepoUpdate(getTenantDomain(), cartridgeAlias);
} catch (Exception e) {
throw new ADCException(e.getMessage() != null ? e.getMessage() : "Failed to synchronize repository", e);
}
}
- /**
- * Validate authentication.
- * First call of cli tool in the prompt mode after log in.
- *
- * @return The tenant domain
- */
public String getTenantDomain() {
- if (tenantDomain != null) {
- // This means, authentication is successful
- log.info("Tenant " + tenantDomain + " is authorized to access Application Management Service!");
- }
- return tenantDomain;
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ return carbonContext.getTenantDomain();
}
+
+ public int getTenantId() {
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ return carbonContext.getTenantId();
+ }
/**
* Allow to check whether features are enabled in the back-end
@@ -654,7 +700,7 @@ public class ApplicationManagementService extends AbstractAdmin {
private void checkSuperTenant() throws ADCException {
if (log.isDebugEnabled()) {
log.debug("Checking whether super tenant accesses the service methods. Tenant ID: "
- + ApplicationManagementUtil.getTenantId(getConfigContext()) + ", Tenant Domain: " + carbonContext.getTenantDomain());
+ + ApplicationManagementUtil.getTenantId(getConfigContext()) + ", Tenant Domain: " + getTenantDomain());
}
if (MultitenantConstants.SUPER_TENANT_ID == ApplicationManagementUtil.getTenantId(getConfigContext())) {
throw new ADCException("Super Tenant is not allowed to complete requested operation");