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
