Updated Branches:
  refs/heads/master 00675c8fe -> f413fdc41

adding instance cleanup handling to cartridge agent


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

Branch: refs/heads/master
Commit: f413fdc418a47a327ee353ab651fe5568b870c4b
Parents: 00675c8
Author: rekathiru <[email protected]>
Authored: Fri Jan 3 15:52:09 2014 +0530
Committer: rekathiru <[email protected]>
Committed: Fri Jan 3 15:52:09 2014 +0530

----------------------------------------------------------------------
 .../stratos/cartridge/agent/CartridgeAgent.java | 27 +++++++++++++++++++-
 .../publisher/CartridgeAgentEventPublisher.java | 27 ++++++++++++++++++++
 2 files changed, 53 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f413fdc4/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
index ada94f7..62b39e0 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
@@ -3,16 +3,18 @@ package org.apache.stratos.cartridge.agent;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration;
 import 
org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.RepositoryInformation;
 import 
org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.git.impl.GitBasedArtifactRepository;
+import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration;
 import 
org.apache.stratos.cartridge.agent.event.publisher.CartridgeAgentEventPublisher;
 import org.apache.stratos.cartridge.agent.util.CartridgeAgentConstants;
 import org.apache.stratos.cartridge.agent.util.CartridgeAgentUtils;
 import org.apache.stratos.cartridge.agent.util.ExtensionUtils;
 import org.apache.stratos.messaging.event.Event;
 import 
org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent;
+import 
org.apache.stratos.messaging.event.instance.notifier.InstanceCleanupEvent;
 import 
org.apache.stratos.messaging.listener.instance.notifier.ArtifactUpdateEventListener;
+import 
org.apache.stratos.messaging.listener.instance.notifier.InstanceCleanupEventListener;
 import 
org.apache.stratos.messaging.message.processor.instance.notifier.InstanceNotifierMessageProcessorChain;
 import 
org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventMessageDelegator;
 import 
org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventMessageReceiver;
@@ -58,6 +60,13 @@ public class CartridgeAgent implements Runnable {
                 onArtifactUpdateEvent((ArtifactUpdatedEvent) event);
             }
         });
+
+        processorChain.addEventListener(new InstanceCleanupEventListener() {
+            @Override
+            protected void onEvent(Event event) {
+               onInstanceCleanupEvent((InstanceCleanupEvent) event);
+            }
+        });
         InstanceNotifierEventMessageDelegator messageDelegator = new 
InstanceNotifierEventMessageDelegator(processorChain);
         InstanceNotifierEventMessageReceiver messageReceiver = new 
InstanceNotifierEventMessageReceiver(messageDelegator);
         Thread messageReceiverThread = new Thread(messageReceiver);
@@ -137,6 +146,22 @@ public class CartridgeAgent implements Runnable {
         }
     }
 
+    private void onInstanceCleanupEvent(InstanceCleanupEvent event) {
+        InstanceCleanupEvent instanceCleanupEvent = 
(InstanceCleanupEvent)event;
+        String memberIdInPayload = 
CartridgeAgentConfiguration.getInstance().getMemberId();
+        String memberId = instanceCleanupEvent.getMemberId();
+        if(memberId != null && memberId.equals(memberIdInPayload)) {
+            if(log.isInfoEnabled()) {
+                log.info("Executing cleaning up the data in the cartridge 
instance...");
+            }
+            // TODO
+            //cleaning up the cartridge instance's data
+
+            //publishing the Ready to shutdown event after performing the 
cleanup
+            CartridgeAgentEventPublisher.publishInstanceReadyToShutdownEvent();
+        }
+    }
+
     public void terminate() {
         terminated = true;
     }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f413fdc4/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
index e7be139..70b4989 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/event/publisher/CartridgeAgentEventPublisher.java
@@ -7,6 +7,7 @@ import 
org.apache.stratos.cartridge.agent.statistics.publisher.HealthStatisticsN
 import org.apache.stratos.cartridge.agent.util.ExtensionUtils;
 import org.apache.stratos.messaging.broker.publish.EventPublisher;
 import 
org.apache.stratos.messaging.event.instance.status.InstanceActivatedEvent;
+import 
org.apache.stratos.messaging.event.instance.status.InstanceReadyToShutdownEvent;
 import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;
 import org.apache.stratos.messaging.util.Constants;
 
@@ -17,6 +18,7 @@ public class CartridgeAgentEventPublisher {
     private static final Log log = 
LogFactory.getLog(CartridgeAgentEventPublisher.class);
     private static boolean started;
     private static boolean activated;
+    private static boolean readyToShutdown;
 
     public static void publishInstanceStartedEvent() {
         if (!started) {
@@ -80,4 +82,29 @@ public class CartridgeAgentEventPublisher {
             }
         }
     }
+
+     public static void publishInstanceReadyToShutdownEvent() {
+        if (!readyToShutdown) {
+            if (log.isInfoEnabled()) {
+                log.info("Publishing instance activated event");
+            }
+            InstanceReadyToShutdownEvent event = new 
InstanceReadyToShutdownEvent(
+                    CartridgeAgentConfiguration.getInstance().getServiceName(),
+                    CartridgeAgentConfiguration.getInstance().getClusterId(),
+                    
CartridgeAgentConfiguration.getInstance().getNetworkPartitionId(),
+                    CartridgeAgentConfiguration.getInstance().getPartitionId(),
+                    CartridgeAgentConfiguration.getInstance().getMemberId());
+
+            EventPublisher eventPublisher = new 
EventPublisher(Constants.INSTANCE_STATUS_TOPIC);
+            eventPublisher.publish(event);
+            readyToShutdown = true;
+            if (log.isInfoEnabled()) {
+                log.info("Instance ReadyToShutDown event published");
+            }
+        } else {
+            if (log.isWarnEnabled()) {
+                log.warn("Instance already sent ReadyToShutDown event....");
+            }
+        }
+    }
 }

Reply via email to