removing clusters as part of application undeployment instead of application deletion
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ea340d31 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ea340d31 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ea340d31 Branch: refs/heads/tenantisolation Commit: ea340d31153cae687e979101d7b15e8b57af51d7 Parents: 101e979 Author: reka <[email protected]> Authored: Thu Jun 25 19:10:17 2015 +0530 Committer: reka <[email protected]> Committed: Thu Jun 25 19:10:17 2015 +0530 ---------------------------------------------------------------------- .../monitor/component/GroupMonitor.java | 4 ++-- .../services/impl/AutoscalerServiceImpl.java | 2 +- .../application/ApplicationEventReceiver.java | 23 +++++++++++++++----- .../messaging/topology/TopologyBuilder.java | 9 +++++--- 4 files changed, 27 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ea340d31/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java index 37d1d5f..7ef8ce4 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java @@ -565,7 +565,7 @@ public class GroupMonitor extends ParentComponentMonitor { GroupInstance instance = (GroupInstance) instanceIdToInstanceMap.get(instanceId); if (instance != null) { if (log.isInfoEnabled()) { - log.info(String.format("Publishing Group terminating event for [application] " + + log.info(String.format("Publishing group terminating event for [application] " + "%s [group] %s [instance] %s", appId, id, instanceId)); } ApplicationBuilder.handleGroupTerminatingEvent(appId, id, instanceId); @@ -576,7 +576,7 @@ public class GroupMonitor extends ParentComponentMonitor { if (!instanceIds.isEmpty()) { for (String instanceId1 : instanceIds) { if (log.isInfoEnabled()) { - log.info(String.format("Publishing Group terminating event for" + + log.info(String.format("Publishing group terminating event for" + " [application] %s [group] %s [instance] %s", appId, id, instanceId1)); } http://git-wip-us.apache.org/repos/asf/stratos/blob/ea340d31/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 9dd67bb..dab0b19 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 @@ -509,7 +509,7 @@ public class AutoscalerServiceImpl implements AutoscalerService { "un-deployment is has already been attempted thus not invoking again"); return false; } else { - log.info(String.format("Gracefully un-deploying the application " + applicationId)); + log.info(String.format("Gracefully un-deploying the [application] %s ", applicationId)); appMonitor.setTerminating(true); undeployApplicationGracefully(applicationId); } http://git-wip-us.apache.org/repos/asf/stratos/blob/ea340d31/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java index 5d72cdd..3b38e97 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/receiver/application/ApplicationEventReceiver.java @@ -21,9 +21,13 @@ package org.apache.stratos.cloud.controller.messaging.receiver.application; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder; +import org.apache.stratos.messaging.domain.application.Application; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.application.ApplicationDeletedEvent; +import org.apache.stratos.messaging.event.application.ApplicationInstanceTerminatedEvent; import org.apache.stratos.messaging.listener.application.ApplicationDeletedEventListener; +import org.apache.stratos.messaging.listener.application.ApplicationInstanceTerminatedEventListener; +import org.apache.stratos.messaging.message.receiver.application.ApplicationManager; import org.apache.stratos.messaging.message.receiver.application.ApplicationsEventReceiver; import java.util.concurrent.ExecutorService; @@ -52,14 +56,23 @@ public class ApplicationEventReceiver { } private void addEventListeners() { - applicationsEventReceiver.addEventListener(new ApplicationDeletedEventListener() { + + applicationsEventReceiver.addEventListener(new ApplicationInstanceTerminatedEventListener() { @Override protected void onEvent(Event event) { // Remove the application related data - ApplicationDeletedEvent deletedEvent = (ApplicationDeletedEvent) event; - log.info("Application deleted event received: [application-id] " + deletedEvent.getAppId()); - String appId = deletedEvent.getAppId(); - TopologyBuilder.handleApplicationClustersRemoved(appId, deletedEvent.getClusterData()); + ApplicationInstanceTerminatedEvent instanceTerminatedEvent = + (ApplicationInstanceTerminatedEvent) event; + log.info("Application instance terminated event received: [application-id] " + + instanceTerminatedEvent.getAppId()); + String appId = instanceTerminatedEvent.getAppId(); + Application application = ApplicationManager.getApplications(). + getApplication(instanceTerminatedEvent.getAppId()); + + if(application.getInstanceContextCount() == 0) { + TopologyBuilder.handleApplicationClustersRemoved(appId, + application.getClusterDataRecursively()); + } } }); } http://git-wip-us.apache.org/repos/asf/stratos/blob/ea340d31/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java index cee82d6..f04a11f 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java @@ -222,7 +222,8 @@ public class TopologyBuilder { TopologyEventPublisher.sendApplicationClustersCreated(appId, appClusters); } - public static void handleApplicationClustersRemoved(String appId, Set<ClusterDataHolder> clusterData) { + public static void handleApplicationClustersRemoved(String appId, + Set<ClusterDataHolder> clusterData) { TopologyManager.acquireWriteLock(); List<Cluster> removedClusters = new ArrayList<Cluster>(); @@ -237,12 +238,14 @@ public class TopologyBuilder { if (aService != null) { removedClusters.add(aService.removeCluster(aClusterData.getClusterId())); } else { - log.warn("Service " + aClusterData.getServiceType() + " not found, unable to remove Cluster " + aClusterData.getClusterId()); + log.warn("Service " + aClusterData.getServiceType() + " not found, " + + "unable to remove Cluster " + aClusterData.getClusterId()); } // remove runtime data context.removeClusterContext(aClusterData.getClusterId()); - log.info("Removed application [ " + appId + " ]'s Cluster [ " + aClusterData.getClusterId() + " ] from the topology"); + log.info("Removed application [ " + appId + " ]'s Cluster " + + "[ " + aClusterData.getClusterId() + " ] from the topology"); } // persist runtime data changes CloudControllerContext.getInstance().persist();
