Unsubscription from a multi-tenant cartridge doesn't clean up the GIT 
repository inside the Cartridge instances


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

Branch: refs/heads/4.0.0-grouping
Commit: ee75407f478a98f35f0f5dbea75c9fbc3dd4a39d
Parents: 9f0c67e
Author: Udara Liyanage <[email protected]>
Authored: Mon Aug 18 12:51:19 2014 +0530
Committer: Udara Liyanage <[email protected]>
Committed: Mon Aug 18 12:55:11 2014 +0530

----------------------------------------------------------------------
 .../stratos/cartridge/agent/CartridgeAgent.java | 44 ++++++++++++++
 .../git/impl/GitBasedArtifactRepository.java    | 33 +++++++++++
 .../extensions/DefaultExtensionHandler.java     | 60 +++++++++++++++++---
 .../agent/extensions/ExtensionHandler.java      |  9 +++
 .../agent/util/CartridgeAgentConstants.java     |  2 +
 .../cartridge/agent/util/ExtensionUtils.java    | 30 ++++++++++
 .../distribution/src/main/assembly/bin.xml      |  2 +
 .../distribution/src/main/bin/stratos.sh        |  4 +-
 .../src/main/extensions/artifacts-copy.sh       |  3 +
 .../src/main/extensions/tenant-subscribed.sh    | 28 +++++++++
 .../src/main/extensions/tenant-unsubscribed.sh  | 28 +++++++++
 11 files changed, 233 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/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 35b9973..bce3c08 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
@@ -50,6 +50,8 @@ import 
org.apache.stratos.messaging.message.receiver.tenant.TenantEventReceiver;
 import org.apache.stratos.messaging.event.tenant.CompleteTenantEvent;
 import org.apache.stratos.messaging.event.tenant.SubscriptionDomainAddedEvent;
 import 
org.apache.stratos.messaging.event.tenant.SubscriptionDomainRemovedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent;
 import org.apache.stratos.messaging.event.topology.*;
 import 
org.apache.stratos.messaging.listener.instance.notifier.ArtifactUpdateEventListener;
 import 
org.apache.stratos.messaging.listener.instance.notifier.InstanceCleanupClusterEventListener;
@@ -57,6 +59,8 @@ import 
org.apache.stratos.messaging.listener.instance.notifier.InstanceCleanupMe
 import 
org.apache.stratos.messaging.listener.tenant.CompleteTenantEventListener;
 import 
org.apache.stratos.messaging.listener.tenant.SubscriptionDomainsAddedEventListener;
 import 
org.apache.stratos.messaging.listener.tenant.SubscriptionDomainsRemovedEventListener;
+import 
org.apache.stratos.messaging.listener.tenant.TenantSubscribedEventListener;
+import 
org.apache.stratos.messaging.listener.tenant.TenantUnSubscribedEventListener;
 import org.apache.stratos.messaging.listener.topology.*;
 import 
org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventReceiver;
 import 
org.apache.stratos.messaging.message.receiver.tenant.TenantEventReceiver;
@@ -502,6 +506,46 @@ public class CartridgeAgent implements Runnable {
             }
         });
 
+        tenantEventReceiver.addEventListener(new 
TenantSubscribedEventListener() {
+            @Override
+            protected void onEvent(Event event) {
+                try {
+                    TenantManager.acquireReadLock();
+                    if (log.isDebugEnabled()) {
+                        log.debug("Tenant subscribed event received");
+                    }
+                    TenantSubscribedEvent tenantSubscribedEvent = 
(TenantSubscribedEvent) event;
+                    
extensionHandler.onTenantSubscribedEvent(tenantSubscribedEvent);
+                } catch (Exception e) {
+                    if (log.isErrorEnabled()) {
+                        log.error("Error processing tenant subscribed event", 
e);
+                    }
+                } finally {
+                    TenantManager.releaseReadLock();
+                }
+            }
+        });
+
+        tenantEventReceiver.addEventListener(new 
TenantUnSubscribedEventListener() {
+            @Override
+            protected void onEvent(Event event) {
+                try {
+                    TenantManager.acquireReadLock();
+                    if (log.isDebugEnabled()) {
+                        log.debug("Tenant unSubscribed event received");
+                    }
+                    TenantUnSubscribedEvent tenantUnSubscribedEvent = 
(TenantUnSubscribedEvent) event;
+                    
extensionHandler.onTenantUnSubscribedEvent(tenantUnSubscribedEvent);
+                } catch (Exception e) {
+                    if (log.isErrorEnabled()) {
+                        log.error("Error processing tenant unSubscribed 
event", e);
+                    }
+                } finally {
+                    TenantManager.releaseReadLock();
+                }
+            }
+        });
+
         Thread tenantEventReceiverThread = new Thread(tenantEventReceiver);
         tenantEventReceiverThread.start();
         if (log.isInfoEnabled()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
index ecb436e..49338a6 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
@@ -29,6 +29,8 @@ import 
org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.git.i
 import 
org.apache.stratos.cartridge.agent.artifact.deployment.synchronizer.git.util.Utilities;
 import org.apache.stratos.cartridge.agent.config.CartridgeAgentConfiguration;
 import org.apache.stratos.cartridge.agent.extensions.ExtensionHandler;
+import org.apache.stratos.cartridge.agent.util.CartridgeAgentConstants;
+import org.apache.stratos.cartridge.agent.util.ExtensionUtils;
 import org.eclipse.jgit.api.*;
 import org.eclipse.jgit.api.errors.*;
 import org.eclipse.jgit.lib.Ref;
@@ -37,6 +39,7 @@ import org.eclipse.jgit.lib.StoredConfig;
 import org.eclipse.jgit.storage.file.FileRepository;
 import org.eclipse.jgit.transport.SshSessionFactory;
 import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
+import org.apache.commons.io.*;
 
 import java.io.File;
 import java.io.IOException;
@@ -246,6 +249,10 @@ public class GitBasedArtifactRepository {
         return tenantToRepoContextMap.get(tenantId);
     }
 
+    private void removeGitRepoContext(int tenantId) {
+        tenantToRepoContextMap.remove(tenantId);
+    }
+
     /**
      * Commits any changes in the local repository to the relevant remote 
repository
      *
@@ -521,6 +528,32 @@ public class GitBasedArtifactRepository {
        }
    }
 
+    public boolean removeRepo(int tenantId) throws IOException {
+        RepositoryContext gitRepoCtx = retrieveCachedGitContext(tenantId);
+
+        log.info("git repository deleted for tenant " + 
gitRepoCtx.getTenantId());
+
+        // Stop the artifact update task
+        gitRepoCtx.getArtifactSyncSchedular().shutdown();
+        // Remove git repo for the tenant
+        FileUtils.deleteDirectory(gitRepoCtx.getLocalRepo().getDirectory());
+        FileUtils.deleteDirectory(new File(gitRepoCtx.getGitLocalRepoPath()));
+
+        removeGitRepoContext(tenantId);
+
+        if (tenantId == -1234) {
+            if (CartridgeAgentConfiguration.getInstance().isMultitenant()) {
+                ExtensionUtils.executeCopyArtifactsExtension(
+                        CartridgeAgentConstants.SUPERTENANT_TEMP_PATH,
+                        CartridgeAgentConfiguration.getInstance().getAppPath() 
+ "/repository/deployment/server/"
+                        );
+            }
+        }
+
+
+        return true;
+    }
+
     private boolean pullAndHandleErrors (RepositoryContext gitRepoCtx) {
 
         try {

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
index e861819..c1a134f 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
@@ -39,12 +39,15 @@ import 
org.apache.stratos.messaging.event.instance.notifier.InstanceCleanupMembe
 import org.apache.stratos.messaging.event.tenant.CompleteTenantEvent;
 import org.apache.stratos.messaging.event.tenant.SubscriptionDomainAddedEvent;
 import 
org.apache.stratos.messaging.event.tenant.SubscriptionDomainRemovedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent;
 import org.apache.stratos.messaging.event.topology.*;
 import org.apache.stratos.messaging.message.receiver.tenant.TenantManager;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.wso2.andes.util.Serial;
 
 import java.io.File;
+import java.io.IOException;
 import java.lang.reflect.Type;
 import java.util.*;
 
@@ -66,6 +69,13 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             if (log.isDebugEnabled()) {
                 log.debug("Processing instance started event...");
             }
+
+            if (CartridgeAgentConfiguration.getInstance().isMultitenant()) {
+                ExtensionUtils.executeCopyArtifactsExtension(
+                        CartridgeAgentConfiguration.getInstance().getAppPath() 
+ "/repository/deployment/server/",
+                        CartridgeAgentConstants.SUPERTENANT_TEMP_PATH);
+            }
+
             Map<String, String> env = new HashMap<String, String>();
             ExtensionUtils.executeInstanceStartedExtension(env);
         } catch (Exception e) {
@@ -173,15 +183,6 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             } else {
                 log.info("Artifact updating task disabled");
             }
-            
-            // If supert tenant temp app path is available,
-            // copy the artifacts to carbon server's deployment path
-            String src = CartridgeAgentConstants.SUPERTENANT_TEMP_PATH;
-            if (new File(src).exists() && tenantId.equals("-1234")) {
-                ExtensionUtils.executeCopyArtifactsExtension(src,
-                                       
CartridgeAgentConfiguration.getInstance().getAppPath()+ 
"/repository/deployment/server/");
-            }
-
         }
     }
 
@@ -989,4 +990,45 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
         ExtensionUtils.executeCopyArtifactsExtension(src, des);
     }
 
+    @Override
+    public void onTenantSubscribedEvent(TenantSubscribedEvent 
tenantSubscribedEvent) {
+        if (log.isInfoEnabled()) {
+            log.info(String.format("Tenant subscribed event received: [tenant] 
%s [service] %s [cluster] %s",
+                            tenantSubscribedEvent.getTenantId(), 
tenantSubscribedEvent.getServiceName(),
+                            tenantSubscribedEvent.getClusterIds())
+            );
+        }
+
+        if (log.isDebugEnabled()) {
+            String msg = gson.toJson(tenantSubscribedEvent);
+            log.debug("Tenant subscribed event msg:" + msg);
+        }
+        Map<String, String> env = new HashMap<String, String>();
+        ExtensionUtils.executeTenantSubscribedExtension(env);
+    }
+
+    @Override
+    public void onTenantUnSubscribedEvent(TenantUnSubscribedEvent 
tenantUnSubscribedEvent) {
+        if (log.isInfoEnabled()) {
+            log.info(String.format("Tenant unsubscribed event received: 
[tenant] %s [service] %s [cluster] %s",
+                    tenantUnSubscribedEvent.getTenantId(), 
tenantUnSubscribedEvent.getServiceName(),
+                    tenantUnSubscribedEvent.getClusterIds()));
+        }
+
+        if (log.isDebugEnabled()) {
+            String msg = gson.toJson(tenantUnSubscribedEvent);
+            log.debug("Tenant unsubscribed event msg:" + msg);
+        }
+
+        try {
+            if 
(CartridgeAgentConfiguration.getInstance().getServiceName().equals(tenantUnSubscribedEvent.getServiceName()))
 {
+                
GitBasedArtifactRepository.getInstance().removeRepo(tenantUnSubscribedEvent.getTenantId());
+            }
+        } catch (Exception e) {
+            log.error(e);
+        }
+        Map<String, String> env = new HashMap<String, String>();
+        ExtensionUtils.executeTenantUnSubscribedExtension(env);
+    }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/ExtensionHandler.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/ExtensionHandler.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/ExtensionHandler.java
index 1ab380c..35cebbd 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/ExtensionHandler.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/ExtensionHandler.java
@@ -25,8 +25,12 @@ import 
org.apache.stratos.messaging.event.instance.notifier.InstanceCleanupMembe
 import org.apache.stratos.messaging.event.tenant.CompleteTenantEvent;
 import org.apache.stratos.messaging.event.tenant.SubscriptionDomainAddedEvent;
 import 
org.apache.stratos.messaging.event.tenant.SubscriptionDomainRemovedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent;
 import org.apache.stratos.messaging.event.topology.*;
 
+import java.io.IOException;
+
 public interface ExtensionHandler {
     public void onInstanceStartedEvent();
 
@@ -61,4 +65,9 @@ public interface ExtensionHandler {
     public void 
onSubscriptionDomainRemovedEvent(SubscriptionDomainRemovedEvent 
subscriptionDomainRemovedEvent);
 
     public void onCopyArtifactsExtension(String src, String des);
+
+    public void onTenantSubscribedEvent(TenantSubscribedEvent 
tenantSubscribedEvent);
+
+    public void onTenantUnSubscribedEvent(TenantUnSubscribedEvent 
tenantUnSubscribedEvent);
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
index d7c39f6..d0c4bc9 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
@@ -87,6 +87,8 @@ public class CartridgeAgentConstants implements Serializable{
     public static final String SUBSCRIPTION_DOMAIN_ADDED_SCRIPT = 
"extension.subscription.domain.added";
     public static final String SUBSCRIPTION_DOMAIN_REMOVED_SCRIPT = 
"extension.subscription.domain.removed";
     public static final String ARTIFACTS_COPY_SCRIPT = 
"extension.artifacts.copy";
+    public static final String TENANT_SUBSCRIBED_SCRIPT = 
"extension.tenant.subscribed";
+    public static final String TENANT_UNSUBSCRIBED_SCRIPT = 
"extension.tenant.unsubscribed";
 
     public static final String SERVICE_GROUP_TOPOLOGY_KEY = 
"payload_parameter.SERIVCE_GROUP";
     public static final String CLUSTERING_TOPOLOGY_KEY = 
"payload_parameter.CLUSTERING";

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/ExtensionUtils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/ExtensionUtils.java
 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/ExtensionUtils.java
index 51e7c30..ac61f86 100644
--- 
a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/ExtensionUtils.java
+++ 
b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/ExtensionUtils.java
@@ -501,6 +501,36 @@ public class ExtensionUtils {
         }
     }
 
+    public static void executeTenantSubscribedExtension(Map<String, String> 
envParameters) {
+        try {
+            if (log.isDebugEnabled()) {
+                log.debug("Executing tenant subscribed extension");
+            }
+            String script = 
System.getProperty(CartridgeAgentConstants.TENANT_SUBSCRIBED_SCRIPT);
+            String command = prepareCommand(script);
+            addPayloadParameters(envParameters);
+            cleanProcessParameters(envParameters);
+            String output = CommandUtils.executeCommand(command, 
envParameters);
+        } catch (Exception e) {
+            log.error("Could not execute tenant subscribed extension", e);
+        }
+    }
+
+    public static void executeTenantUnSubscribedExtension(Map<String, String> 
envParameters) {
+        try {
+            if (log.isDebugEnabled()) {
+                log.debug("Executing tenant un-subscribed extension");
+            }
+            String script = 
System.getProperty(CartridgeAgentConstants.TENANT_UNSUBSCRIBED_SCRIPT);
+            String command = prepareCommand(script);
+            addPayloadParameters(envParameters);
+            cleanProcessParameters(envParameters);
+            String output = CommandUtils.executeCommand(command, 
envParameters);
+        } catch (Exception e) {
+            log.error("Could not execute tenant un-subscribed extension", e);
+        }
+    }
+
     public static boolean isTopologyInitialized() {
         TopologyManager.acquireReadLock();
         boolean active = TopologyManager.getTopology().isInitialized();

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml 
b/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
index 20bbf10..a433513 100644
--- a/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
+++ b/products/cartridge-agent/modules/distribution/src/main/assembly/bin.xml
@@ -61,6 +61,8 @@
                 <include>subscription-domain-added.sh</include>
                 <include>subscription-domain-removed.sh</include>
                 <include>artifacts-copy.sh</include>
+                <include>tenant-subscribed.sh</include>
+                <include>tenant-unsubscribed.sh</include>
             </includes>
         </fileSet>
         <fileSet>

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh 
b/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
index 0c24f39..2636e74 100644
--- a/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
+++ b/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
@@ -67,7 +67,9 @@ properties="-Dmb.ip=MB-IP
             -Dextension.complete.tenant=complete-tenant.sh
             -Dextension.subscription.domain.added=subscription-domain-added.sh
             
-Dextension.subscription.domain.removed=subscription-domain-removed.sh
-            -Dextension.artifacts.copy=artifacts-copy.sh"
+            -Dextension.artifacts.copy=artifacts-copy.sh
+            -Dextension.tenant.subscribed=tenant-subscribed.sh
+            -Dextension.tenant.unsubscribed=tenant-unsubscribed.sh"
 
 # Uncomment below line to enable remote debugging
 #debug="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
index 5cad830..baa0aeb 100644
--- 
a/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/artifacts-copy.sh
@@ -25,5 +25,8 @@
 #
 
 log=/var/log/apache-stratos/cartridge-agent-extensions.log
+if [[ ! -d $2 ]]; then
+   mkdir -p $2
+fi
 cp -rf $1* $2
 echo "Artifacts Copied" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-subscribed.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-subscribed.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-subscribed.sh
new file mode 100644
index 0000000..66f004c
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-subscribed.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# --------------------------------------------------------------
+# This extension script will be executed once the update artifacts
+# event is received and they are copied to the given path.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+echo `date`": Tenant Subscribed Event" | tee -a $log

http://git-wip-us.apache.org/repos/asf/stratos/blob/ee75407f/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-unsubscribed.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-unsubscribed.sh
 
b/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-unsubscribed.sh
new file mode 100644
index 0000000..651015d
--- /dev/null
+++ 
b/products/cartridge-agent/modules/distribution/src/main/extensions/tenant-unsubscribed.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# --------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# --------------------------------------------------------------
+# This extension script will be executed once the update artifacts
+# event is received and they are copied to the given path.
+# --------------------------------------------------------------
+#
+
+log=/var/log/apache-stratos/cartridge-agent-extensions.log
+echo `date`": Tenant UnSubscribed Event" | tee -a $log

Reply via email to