Updated Branches:
  refs/heads/master 11480eb55 -> 593451a59

Fixing member started event and artifact update event conflict issue.


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

Branch: refs/heads/master
Commit: f6168bcb15bb05ca8cd3cc0c349e93ce40fb32e8
Parents: 6b86f4a
Author: Sajith Kariyawasam <[email protected]>
Authored: Wed Dec 4 18:27:37 2013 +0530
Committer: Sajith Kariyawasam <[email protected]>
Committed: Wed Dec 4 18:27:37 2013 +0530

----------------------------------------------------------------------
 .../cartridge-agent/ec2/php/cartridge-agent.sh  | 75 +-------------------
 .../git/impl/GitBasedArtifactRepository.java    | 21 ++++++
 .../event/subscriber/ArtifactListener.java      | 57 ++++++---------
 .../subscriber/CartridgeAgentConstants.java     |  3 +
 .../event/subscriber/LaunchParamsUtil.java      | 58 +++++++++++++++
 .../cartridge/agent/event/subscriber/Main.java  | 22 +++++-
 6 files changed, 126 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6168bcb/products/cartridge-agent/modules/cartridge-agent/ec2/php/cartridge-agent.sh
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/cartridge-agent/ec2/php/cartridge-agent.sh 
b/products/cartridge-agent/modules/cartridge-agent/ec2/php/cartridge-agent.sh
index 3b47504..fcdabe3 100755
--- 
a/products/cartridge-agent/modules/cartridge-agent/ec2/php/cartridge-agent.sh
+++ 
b/products/cartridge-agent/modules/cartridge-agent/ec2/php/cartridge-agent.sh
@@ -58,6 +58,7 @@ fi
 source ${instance_path}/launch.params
 
 
+
 #---------------------------
 # Starting Topic Subscriber
 #---------------------------
@@ -77,81 +78,9 @@ echo "Event subscribed" | tee -a $LOG
 popd
 
 
-# ---------------------------------------------
-# Publish member-started-event
-# ---------------------------------------------
-echo "Generating member-started-event.json..." | tee -a $LOG
-cp -f $event_publisher_path/templates/member-started-event.json.template 
member-started-event.json.tmp
-cat member-started-event.json.tmp | sed -e "s@SERVICE_NAME@$SERVICE_NAME@g" > 
member-started-event.json
-cp -f member-started-event.json member-started-event.json.tmp
-cat member-started-event.json.tmp | sed -e "s@CLUSTER_ID@$CLUSTER_ID@g" > 
member-started-event.json
-cp -f member-started-event.json member-started-event.json.tmp
-cat member-started-event.json.tmp | sed -e "s@MEMBER_ID@$MEMBER_ID@g" > 
member-started-event.json
-rm -f member-started-event.json.tmp
-echo "member-started-event.json generated" | tee -a $LOG
-
-echo "Publishing member started event..." | tee -a $LOG
-event_class_name=org.apache.stratos.messaging.event.instance.status.MemberStartedEvent
-event_json_path=`pwd`/member-started-event.json
-
-pushd $event_publisher_path/bin
-echo "Executing: event-publisher.sh $MB_IP $MB_PORT $event_class_name 
$event_json_path"
-sh event-publisher.sh $MB_IP $MB_PORT $event_class_name $event_json_path
-echo "Event published" | tee -a $LOG
-popd
-
-
-# -----------------------------------------------------
-# Publish member-activated-event
-# -----------------------------------------------------
-while true
-do
-var=`nc -z localhost 80; echo $?`;
-if [ $var -eq 0 ]
-   then
-       echo "Port 80 is available" | tee -a $LOG
-       break
-   else
-       echo "Port 80 is not available" | tee -a $LOG
-   fi
-   sleep 1
-done
-
-while true
-do
-var=`nc -z localhost 443; echo $?`;
-if [ $var -eq 0 ]
-   then
-       echo "Port 443 is available" | tee -a $LOG
-       break
-   else
-       echo "Port 443 is not available" | tee -a $LOG
-   fi
-   sleep 1
-done
-
-echo "Generating member-activated-event.json..." | tee -a $LOG
-cp -f $event_publisher_path/templates/member-activated-event.json.template 
member-activated-event.json.tmp
-cat member-activated-event.json.tmp | sed -e "s@SERVICE_NAME@$SERVICE_NAME@g" 
> member-activated-event.json
-cp -f member-activated-event.json member-activated-event.json.tmp
-cat member-activated-event.json.tmp | sed -e "s@CLUSTER_ID@$CLUSTER_ID@g" > 
member-activated-event.json
-cp -f member-activated-event.json member-activated-event.json.tmp
-cat member-activated-event.json.tmp | sed -e "s@MEMBER_ID@$MEMBER_ID@g" > 
member-activated-event.json
-rm -f member-activated-event.json.tmp
-echo "member-activated-event.json generated" | tee -a $LOG
-
-echo "Publishing member activated event..." | tee -a $LOG
-event_class_name=org.apache.stratos.messaging.event.instance.status.MemberActivatedEvent
-event_json_path=`pwd`/member-activated-event.json
-
-pushd $event_publisher_path/bin
-echo "Executing: event-publisher.sh $MB_IP $MB_PORT $event_class_name 
$event_json_path"
-sh event-publisher.sh $MB_IP $MB_PORT $event_class_name $event_json_path
-echo "Event published" | tee -a $LOG
-popd
-
 pushd $health_publisher_path/bin
 echo "Executing: health-publisher.sh"
 sh health-publisher.sh $MEMBER_ID $CEP_IP $CEP_PORT $PORTS $CLUSTER_ID
 echo "Health stat published" | tee -a $LOG
 popd
+

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6168bcb/products/cartridge-agent/modules/deployment-synchronizer/src/main/java/org/apache/stratos/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/deployment-synchronizer/src/main/java/org/apache/stratos/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
 
b/products/cartridge-agent/modules/deployment-synchronizer/src/main/java/org/apache/stratos/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
index 98f99ab..7586b41 100644
--- 
a/products/cartridge-agent/modules/deployment-synchronizer/src/main/java/org/apache/stratos/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
+++ 
b/products/cartridge-agent/modules/deployment-synchronizer/src/main/java/org/apache/stratos/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
@@ -411,6 +411,27 @@ public class GitBasedArtifactRepository /*implements 
ArtifactRepository*/ {
 
         return pullArtifacts(gitRepoCtx);
     }
+    
+    
+    
+    public static boolean cloneExists(RepositoryInformation 
repositoryInformation) {
+       
+       int tenantId = Integer.parseInt(repositoryInformation.getTenantId());
+       
+       // if context for tenant is not initialized
+       if(tenantToRepoContextMap.get(tenantId) == null)
+               initGitContext(repositoryInformation);
+       
+        
+               RepositoryContext gitRepoCtx = 
retrieveCachedGitContext(tenantId);
+        if(gitRepoCtx == null) { 
+            return false;
+        }
+
+        /*if(gitRepoCtx.getTenantId() == 
GitDeploymentSynchronizerConstants.SUPER_TENANT_ID)
+            return true;  */
+        return gitRepoCtx.cloneExists();
+    }
 
     /**
      * Pulling if any updates are available in the remote git repository. If 
basic authentication is required,

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6168bcb/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/ArtifactListener.java
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/ArtifactListener.java
 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/ArtifactListener.java
index 5796726..0de55a6 100644
--- 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/ArtifactListener.java
+++ 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/ArtifactListener.java
@@ -19,9 +19,6 @@
 
 package org.apache.stratos.cartridge.agent.event.subscriber;
 
-import java.io.File;
-import java.util.Scanner;
-
 import javax.crypto.Cipher;
 import javax.crypto.SecretKey;
 import javax.crypto.spec.SecretKeySpec;
@@ -32,10 +29,12 @@ import javax.jms.TextMessage;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.deployment.synchronizer.ArtifactRepository;
 import org.apache.stratos.deployment.synchronizer.RepositoryInformation;
 import 
org.apache.stratos.deployment.synchronizer.git.impl.GitBasedArtifactRepository;
+import org.apache.stratos.messaging.broker.publish.TopicPublisher;
 import 
org.apache.stratos.messaging.event.artifact.synchronization.ArtifactUpdatedEvent;
+import org.apache.stratos.messaging.event.instance.status.MemberActivatedEvent;
+import org.apache.stratos.messaging.util.Constants;
 import org.apache.stratos.messaging.util.Util;
 
 
@@ -57,8 +56,8 @@ public class ArtifactListener implements MessageListener{
                }
                
                ArtifactUpdatedEvent event = (ArtifactUpdatedEvent) 
Util.jsonToObject(json, ArtifactUpdatedEvent.class);
-               String clusterIdInPayload = 
readParamValueFromPayload(CartridgeAgentConstants.CLUSTER_ID);
-               String localRepoPath = 
readParamValueFromPayload(CartridgeAgentConstants.APP_PATH);
+               String clusterIdInPayload = 
LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.CLUSTER_ID);
+               String localRepoPath = 
LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.APP_PATH);
                String clusterIdInMessage = event.getClusterId();               
                String repoURL = event.getRepoURL();
                String repoPassword = decryptPassword(event.getRepoPassword());
@@ -74,44 +73,30 @@ public class ArtifactListener implements MessageListener{
                repoInformation.setRepoPassword(repoPassword);
                repoInformation.setRepoUrl(repoURL);
                repoInformation.setRepoPath(localRepoPath);
-               repoInformation.setTenantId(tenantId);          
-               GitBasedArtifactRepository.checkout(repoInformation);           
        
+               repoInformation.setTenantId(tenantId);
+               boolean cloneExists = 
GitBasedArtifactRepository.cloneExists(repoInformation);
+               GitBasedArtifactRepository.checkout(repoInformation);           
+               if(!cloneExists){                       
+                       // send member activated event
+                       log.info("Sending member activated event");
+                       // Send member activated event
+                       MemberActivatedEvent memberActivatedEvent = new 
MemberActivatedEvent();
+                       
memberActivatedEvent.setServiceName(LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.SERVICE_NAME));
+                       
memberActivatedEvent.setClusterId(LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.CLUSTER_ID));
+                       
memberActivatedEvent.setMemberId(LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.MEMBER_ID));
+                       TopicPublisher publisher = new 
TopicPublisher(Constants.INSTANCE_STATUS_TOPIC);
+                       publisher.publish(memberActivatedEvent);
+                       log.info("Member activated event is sent");
+               }       
                }
                
        }
-
        
-       private String readParamValueFromPayload(String param) {
-               String paramValue = null;
-               // read launch params
-               File file = new 
File(System.getProperty(CartridgeAgentConstants.PARAM_FILE_PATH));
-
-               try {
-                       Scanner scanner = new Scanner(file);
-
-                       while (scanner.hasNextLine()) {
-                               String line = scanner.nextLine();
-                               String[] params = line.split(",");
-                               for (String string : params) {
-                                        String[] var = string.split("=");
-                                       if(param.equals(var[0])){
-                                               paramValue = var[1];
-                                       }
-                               }
-                       }
-                       scanner.close();
-               } catch (Exception e) {
-                       //e.printStackTrace();
-                       log.error("Exception is occurred in reading file. ", e);
-               }
-               
-               return paramValue;
-       }
        
        private String decryptPassword(String repoUserPassword) {
                
                String decryptPassword = "";
-               String secret = 
readParamValueFromPayload(CartridgeAgentConstants.CARTRIDGE_KEY); 
+               String secret = 
LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.CARTRIDGE_KEY);
 
                SecretKey key;
                Cipher cipher;
                Base64 coder;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6168bcb/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/CartridgeAgentConstants.java
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/CartridgeAgentConstants.java
 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/CartridgeAgentConstants.java
index 7fceaf3..d3ce926 100644
--- 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/CartridgeAgentConstants.java
+++ 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/CartridgeAgentConstants.java
@@ -29,5 +29,8 @@ public class CartridgeAgentConstants implements Serializable{
        public static final String CARTRIDGE_KEY = "CARTRIDGE_KEY";
        public static final String CLUSTER_ID = "CLUSTER_ID";
        public static final String APP_PATH = "APP_PATH";
+       public static final String SERVICE_NAME = "SERVICE_NAME";
+       public static final String MEMBER_ID = "MEMBER_ID";
+       
        
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6168bcb/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/LaunchParamsUtil.java
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/LaunchParamsUtil.java
 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/LaunchParamsUtil.java
new file mode 100644
index 0000000..164116d
--- /dev/null
+++ 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/LaunchParamsUtil.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+
+package org.apache.stratos.cartridge.agent.event.subscriber;
+
+import java.io.File;
+import java.util.Scanner;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class LaunchParamsUtil {
+
+       private static final Log log = 
LogFactory.getLog(LaunchParamsUtil.class);
+       
+       public static String readParamValueFromPayload(String param) {
+               String paramValue = null;
+               // read launch params
+               File file = new 
File(System.getProperty(CartridgeAgentConstants.PARAM_FILE_PATH));
+
+               try {
+                       Scanner scanner = new Scanner(file);
+
+                       while (scanner.hasNextLine()) {
+                               String line = scanner.nextLine();
+                               String[] params = line.split(",");
+                               for (String string : params) {
+                                        String[] var = string.split("=");
+                                       if(param.equals(var[0])){
+                                               paramValue = var[1];
+                                       }
+                               }
+                       }
+                       scanner.close();
+               } catch (Exception e) {
+                       //e.printStackTrace();
+                       log.error("Exception is occurred in reading file. ", e);
+               }
+               
+               return paramValue;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6168bcb/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/Main.java
----------------------------------------------------------------------
diff --git 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/Main.java
 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/Main.java
index 2c4daa6..e1c680f 100644
--- 
a/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/Main.java
+++ 
b/products/cartridge-agent/modules/event-subscriber/src/main/java/org/apache/stratos/cartridge/agent/event/subscriber/Main.java
@@ -25,7 +25,9 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.messaging.broker.publish.TopicPublisher;
 import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber;
+import org.apache.stratos.messaging.event.instance.status.MemberStartedEvent;
 import org.apache.stratos.messaging.util.Constants;
 
 /**
@@ -46,7 +48,25 @@ public class Main {
         TopicSubscriber subscriber = new 
TopicSubscriber(Constants.ARTIFACT_SYNCHRONIZATION_TOPIC);
         subscriber.setMessageListener(new ArtifactListener());
         Thread tsubscriber = new Thread(subscriber);
-               tsubscriber.start(); 
+               tsubscriber.start();            
+               
+               // 
+               try {
+                       Thread.sleep(10000);
+               } catch (InterruptedException e) {
+                       e.printStackTrace();
+               }
+               
+               log.info("Sending member started event");
+               // Send member activated event
+               MemberStartedEvent event = new MemberStartedEvent();
+               
event.setServiceName(LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.SERVICE_NAME));
+               
event.setClusterId(LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.CLUSTER_ID));
+               
event.setMemberId(LaunchParamsUtil.readParamValueFromPayload(CartridgeAgentConstants.MEMBER_ID));
+               TopicPublisher publisher = new 
TopicPublisher(Constants.INSTANCE_STATUS_TOPIC);
+               publisher.publish(event);
+               log.info("Member started event is sent");               
+
                
                // Start periodical file checker task
                // TODO -- start this thread only if this node configured as a 
commit true node

Reply via email to