Repository: stratos
Updated Branches:
  refs/heads/master afbf95a04 -> 69978760f


If there are no members in cluster Instances, send cluster Terminated Event 
while Forceful undeployment


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

Branch: refs/heads/master
Commit: 69978760f198dcca6ff8818fea65778bf71cc355
Parents: afbf95a
Author: lasinducharith <[email protected]>
Authored: Fri Jun 19 17:11:32 2015 +0530
Committer: lasinducharith <[email protected]>
Committed: Fri Jun 19 17:11:32 2015 +0530

----------------------------------------------------------------------
 .../services/impl/AutoscalerServiceImpl.java    | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/69978760/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 c882f00..795c812 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
@@ -33,6 +33,7 @@ import org.apache.stratos.autoscaler.context.InstanceContext;
 import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import 
org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetworkPartitionContext;
+import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.exception.*;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
 import 
org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException;
@@ -66,6 +67,7 @@ import 
org.apache.stratos.manager.service.stub.domain.application.signup.Applica
 import 
org.apache.stratos.manager.service.stub.domain.application.signup.ArtifactRepository;
 import org.apache.stratos.messaging.domain.application.Application;
 import org.apache.stratos.messaging.domain.application.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.instance.ClusterInstance;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Member;
 import 
org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
@@ -939,7 +941,6 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
             ApplicationManager.releaseReadLockForApplication(applicationId);
         }
 
-
         Set<ClusterDataHolder> allClusters = 
application.getClusterDataRecursively();
         for (ClusterDataHolder clusterDataHolder : allClusters) {
             String serviceType = clusterDataHolder.getServiceType();
@@ -953,6 +954,23 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
                 TopologyManager.releaseReadLockForCluster(serviceType, 
clusterId);
             }
 
+            //If there are no members in cluster Instance, send cluster 
Terminated Event
+            Collection<ClusterInstance> allClusterInstances = 
cluster.getClusterInstances();
+            for (ClusterInstance clusterInstance : allClusterInstances) {
+                boolean anyMembersInClusterInstance = false;
+
+                for (Member member : cluster.getMembers()) {
+                    if 
(member.getClusterInstanceId().equals(clusterInstance.getInstanceId())) {
+                        anyMembersInClusterInstance = true;
+                    }
+                }
+
+                if (anyMembersInClusterInstance == false) {
+                    
ClusterStatusEventPublisher.sendClusterTerminatedEvent(applicationId, 
cluster.getServiceName(),
+                            clusterId, clusterInstance.getInstanceId());
+                }
+            }
+
             List<String> memberListToTerminate = new LinkedList<String>();
             for (Member member : cluster.getMembers()) {
                 memberListToTerminate.add(member.getMemberId());

Reply via email to