From e6cb4531f2dfd8c5e4e3b90c69891cca686142ee Mon Sep 17 00:00:00 2001 From: Vijay VK Date: Tue, 27 Feb 2018 18:12:41 +0000 Subject: Misc updates to collector Change-Id: I7a3b52c454442d6a9f93331142b78bf671ffcd0a Signed-off-by: VENKATESH KUMAR Issue-ID: DCAEGEN2-373 --- src/main/scripts/VESConfigPoller.sh | 125 +++++++++++ src/main/scripts/VESrestfulCollector.sh | 386 ++++++++++++++++---------------- src/main/scripts/docker-entry.sh | 100 +++++---- 3 files changed, 371 insertions(+), 240 deletions(-) create mode 100644 src/main/scripts/VESConfigPoller.sh (limited to 'src/main/scripts') diff --git a/src/main/scripts/VESConfigPoller.sh b/src/main/scripts/VESConfigPoller.sh new file mode 100644 index 00000000..75c2b585 --- /dev/null +++ b/src/main/scripts/VESConfigPoller.sh @@ -0,0 +1,125 @@ +#!/bin/sh -x +### +# ============LICENSE_START======================================================= +# PROJECT +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed 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. +# ============LICENSE_END========================================================= +### +# redirect stdout/stderr to a file +#exec &> /opt/app/VESCollector/logs/console.txt + +usage() { + echo "VESConfigPoller.sh" +} + + +## Remove singel execution logic (loop 0) +## On configupdate function, remove LoadDynamicConfig and invoke VESrestfulCollector stop/start + +BASEDIR=/opt/app/VESCollector/ +CONFIGFILENAME=/opt/app/KV-Configuration.json + + +collector_configupdate() { + + echo `date +"%Y%m%d.%H%M%S%3N"` - VESConfigPoller.sh:collector_configupdate + if [ -z "$CONSUL_HOST" ] || [ -z "$CONFIG_BINDING_SERVICE" ] || [ -z "$HOSTNAME" ]; then + echo "INFO: USING STANDARD CONTROLLER CONFIGURATION" + else + # move into base directory + cd $BASEDIR + + CONFIG_FETCH=org.onap.dcae.controller.FetchDynamicConfig + $JAVA -cp "etc${PATHSEP}lib/*" $CONFIG_FETCH $* + if [ $? -ne 0 ]; then + echo "ERROR: Failed to fetch dynamic configuration from consul into container $CONFIGFILENAME" + else + echo "INFO: Dynamic config fetched successfully" + fi + sleep 10s + FLAG=0 + + if [ -f $CONFIGFILENAME ]; then + if [[ $(find $CONFIGFILENAME -mmin -$CBSPOLLTIMER -print) ]]; then + echo "File $CONFIGFILENAME is updated under $CBSPOLLTIMER minutes; Loader to be invoked" + FLAG=1 + else + echo "File $CONFIGFILENAME NOT updated in last $CBSPOLLTIMER minutes; no configuration update!" + FLAG=0 + fi + + if [ $FLAG -eq 1 ]; then + echo "INFO: CONFIGFILE updated; triggering restart" + /opt/app/VESCollector/bin/VESrestfulCollector.sh stop + /opt/app/VESCollector/bin/VESrestfulCollector.sh start & + else + echo "INFO: CONFIGFILE load skipped" + fi + else + echo "ERROR: Configuration file $CONFIGFILENAME missing" + fi + fi +} + + + +if [ -z "$CBSPOLLTIMER" ]; then + echo "CBSPOLLTIMER not set; set this to polling frequency in minutes" + exit 1 +fi + + +## Pre-setting + +# use JAVA_HOME if provided +if [ -z "$JAVA_HOME" ]; then + echo "ERROR: JAVA_HOME not setup" + echo "Startup Aborted!!" + exit 1 + #JAVA=java +else + JAVA=$JAVA_HOME/bin/java +fi + + + +# determine a path separator that works for this platform +PATHSEP=":" +case "$(uname -s)" in + + Darwin) + ;; + + Linux) + ;; + + CYGWIN*|MINGW32*|MSYS*) + PATHSEP=";" + ;; + + *) + ;; +esac + + + +##Run in loop the config pull and check +while true +do + sleep $(echo $CBSPOLLTIMER)m + collector_configupdate | tee -a ${BASEDIR}/logs/console.txt +done + diff --git a/src/main/scripts/VESrestfulCollector.sh b/src/main/scripts/VESrestfulCollector.sh index 14e90cc9..4e3fd83e 100644 --- a/src/main/scripts/VESrestfulCollector.sh +++ b/src/main/scripts/VESrestfulCollector.sh @@ -1,193 +1,193 @@ -#!/bin/sh - -### -# ============LICENSE_START======================================================= -# PROJECT -# ================================================================================ -# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# Licensed 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. -# ============LICENSE_END========================================================= -### - -# redirect stdout/stderr to a file -#exec &> /opt/app/VESCollector/logs/console.txt - -usage() { - echo "VESrestfulCollector.sh " -} - - -BASEDIR=/opt/app/VESCollector/ - -collector_start() { - echo `date +"%Y%m%d.%H%M%S%3N"` - collector_start | tee -a ${BASEDIR}/logs/console.txt - collectorPid=`pgrep -f org.onap.dcae.commonFunction` - - if [ ! -z "$collectorPid" ]; then - echo "WARNING: VES Restful Collector already running as PID $collectorPid" | tee -a ${BASEDIR}/logs/console.txt - echo "Startup Aborted!!!" | tee -a ${BASEDIR}/logs/console.txt - exit 1 - fi - - - # run java. The classpath is the etc dir for config files, and the lib dir - # for all the jars. - #cd /opt/app/VESCollector/ - cd ${BASEDIR} - #nohup $JAVA -cp "etc${PATHSEP}lib/*" $JAVA_OPTS -Dhttps.protocols=TLSv1.1,TLSv1.2 $MAINCLASS $* & - nohup $JAVA -cp "etc${PATHSEP}lib/*" -Xms256m -Xmx512m -XX:ErrorFile=/opt/app/VESCollector/logs/java_error%p.log -XX:+HeapDumpOnOutOfMemoryError -Dhttps.protocols=TLSv1.1,TLSv1.2 $MAINCLASS $* & - if [ $? -ne 0 ]; then - echo "VES Restful Collector has been started!!!" | tee -a ${BASEDIR}/logs/console.txt - fi - - -} - -collector_stop() { - echo `date +"%Y%m%d.%H%M%S%3N"` - collector_stop - collectorPid=`pgrep -f org.onap.dcae.commonFunction` - if [ ! -z "$collectorPid" ]; then - echo "Stopping PID $collectorPid" - - kill -9 $collectorPid - sleep 5 - if [ ! "$(pgrep -f org.onap.dcae.commonFunction)" ]; then - echo "VES Restful Collector has been stopped!!!" - else - echo "VES Restful Collector is being stopped!!!" - fi - else - echo "WARNING: No VES Collector instance is currently running"; - exit 1 - fi - - -} - -collector_configupdate() { - - echo `date +"%Y%m%d.%H%M%S%3N"` - collector_configupdate - if [ -z "$CONSUL_HOST" ] || [ -z "$CONFIG_BINDING_SERVICE" ] || [ -z "$HOSTNAME" ]; then - echo "INFO: USING STANDARD CONTROLLER CONFIGURATION" - else - - echo "INFO: DYNAMIC CONFIG INTERFACE SUPPORTED" - # move into base directory - - #BASEDIR=`dirname $0` - #cd $BASEDIR/.. - cd /opt/app/VESCollector - - CONFIG_FETCH=org.onap.dcae.controller.FetchDynamicConfig - $JAVA -cp "etc${PATHSEP}lib/*" $CONFIG_FETCH $* - if [ $? -ne 0 ]; then - echo "ERROR: Failed to fetch dynamic configuration from consul into container /opt/app/KV-Configuration.json" - else - echo "INFO: Dynamic config fetched and written successfully into container /opt/app/KV-Configuration.json" - fi - - - if [ -f /opt/app/KV-Configuration.json ]; then - - CONFIG_UPDATER=org.onap.dcae.controller.LoadDynamicConfig - $JAVA -cp "etc${PATHSEP}lib/*" $CONFIG_UPDATER $* - if [ $? -ne 0 ]; then - echo "ERROR: Failed to update dynamic configuration into Application" - else - echo "INFO: Dynamic config updated successfully into VESCollector configuration!" - fi - - # Identify alias names from keystore and password provided - - paramName="collector.keystore.alias" - localpropertyfile="/opt/app/VESCollector/etc/collector.properties" - tmpfile="/opt/app/VESCollector/etc/collector.properties.tmp" - - keystore=`grep collector.keystore.file.location $localpropertyfile | tr -d '[:space:]' | cut -d"=" -f2` - keypwdfile=`grep collector.keystore.passwordfile $localpropertyfile | tr -d '[:space:]' | cut -d"=" -f2` - - echo "/usr/bin/keytool -list -keystore $keystore < $keypwdfile | grep "PrivateKeyEntry" | cut -d"," -f1" - tmpalias=`/usr/bin/keytool -list -keystore $keystore < $keypwdfile | grep "PrivateKeyEntry" | cut -d"," -f1` - echo "tmpalias:" $tmpalias - alias=`echo $tmpalias | cut -d":" -f2` - echo "alias:" $alias - sed "s~$paramName=.*~$paramName=$alias~g" $localpropertyfile > $tmpfile - echo `cat $tmpfile > $localpropertyfile` - rm $tmpfile - echo "INFO: Keystore alias updated into configuration" - - else - echo "ERROR: Configuration file /opt/app/KV-Configuration.json missing" - fi - - fi -} - - -## Check usage -if [ $# -ne 1 ]; then - usage - exit -fi - - -## Pre-setting - -# use JAVA_HOME if provided -if [ -z "$JAVA_HOME" ]; then - echo "ERROR: JAVA_HOME not setup" - echo "Startup Aborted!!" - exit 1 - #JAVA=java -else - JAVA=$JAVA_HOME/bin/java -fi - - -MAINCLASS=org.onap.dcae.commonFunction.CommonStartup - -# determine a path separator that works for this platform -PATHSEP=":" -case "$(uname -s)" in - - Darwin) - ;; - - Linux) - ;; - - CYGWIN*|MINGW32*|MSYS*) - PATHSEP=";" - ;; - - *) - ;; -esac - - - - -case $1 in - "start") - collector_configupdate | tee -a ${BASEDIR}/logs/console.txt - collector_start - ;; - "stop") - collector_stop | tee -a ${BASEDIR}/logs/console.txt - ;; - *) - usage - ;; -esac - +#!/bin/sh + +### +# ============LICENSE_START======================================================= +# PROJECT +# ================================================================================ +# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed 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. +# ============LICENSE_END========================================================= +### + +# redirect stdout/stderr to a file +#exec &> /opt/app/VESCollector/logs/console.txt + +usage() { + echo "VESrestfulCollector.sh " +} + + +BASEDIR=/opt/app/VESCollector/ + +collector_start() { + echo `date +"%Y%m%d.%H%M%S%3N"` - collector_start | tee -a ${BASEDIR}/logs/console.txt + collectorPid=`pgrep -f org.onap.dcae.commonFunction` + + if [ ! -z "$collectorPid" ]; then + echo "WARNING: VES Restful Collector already running as PID $collectorPid" | tee -a ${BASEDIR}/logs/console.txt + echo "Startup Aborted!!!" | tee -a ${BASEDIR}/logs/console.txt + exit 1 + fi + + + # run java. The classpath is the etc dir for config files, and the lib dir + # for all the jars. + #cd /opt/app/VESCollector/ + cd ${BASEDIR} + #nohup $JAVA -cp "etc${PATHSEP}lib/*" $JAVA_OPTS -Dhttps.protocols=TLSv1.1,TLSv1.2 $MAINCLASS $* & + nohup $JAVA -cp "etc${PATHSEP}lib/*" -Xms256m -Xmx512m -XX:ErrorFile=/opt/app/VESCollector/logs/java_error%p.log -XX:+HeapDumpOnOutOfMemoryError -Dhttps.protocols=TLSv1.1,TLSv1.2 $MAINCLASS $* & + if [ $? -ne 0 ]; then + echo "VES Restful Collector has been started!!!" | tee -a ${BASEDIR}/logs/console.txt + fi + + +} + +collector_stop() { + echo `date +"%Y%m%d.%H%M%S%3N"` - collector_stop + collectorPid=`pgrep -f org.onap.dcae.commonFunction` + if [ ! -z "$collectorPid" ]; then + echo "Stopping PID $collectorPid" + + kill -9 $collectorPid + sleep 5 + if [ ! "$(pgrep -f org.onap.dcae.commonFunction)" ]; then + echo "VES Restful Collector has been stopped!!!" + else + echo "VES Restful Collector is being stopped!!!" + fi + else + echo "WARNING: No VES Collector instance is currently running"; + exit 1 + fi + + +} + +collector_configupdate() { + + echo `date +"%Y%m%d.%H%M%S%3N"` - collector_configupdate + if [ -z "$CONSUL_HOST" ] || [ -z "$CONFIG_BINDING_SERVICE" ] || [ -z "$HOSTNAME" ]; then + echo "INFO: USING STANDARD CONTROLLER CONFIGURATION" + else + + echo "INFO: DYNAMIC CONFIG INTERFACE SUPPORTED" + # move into base directory + + #BASEDIR=`dirname $0` + #cd $BASEDIR/.. + cd /opt/app/VESCollector + + CONFIG_FETCH=org.onap.dcae.controller.FetchDynamicConfig + $JAVA -cp "etc${PATHSEP}lib/*" $CONFIG_FETCH $* + if [ $? -ne 0 ]; then + echo "ERROR: Failed to fetch dynamic configuration from consul into container /opt/app/KV-Configuration.json" + else + echo "INFO: Dynamic config fetched and written successfully into container /opt/app/KV-Configuration.json" + fi + + + if [ -f /opt/app/KV-Configuration.json ]; then + + CONFIG_UPDATER=org.onap.dcae.controller.LoadDynamicConfig + $JAVA -cp "etc${PATHSEP}lib/*" $CONFIG_UPDATER $* + if [ $? -ne 0 ]; then + echo "ERROR: Failed to update dynamic configuration into Application" + else + echo "INFO: Dynamic config updated successfully into VESCollector configuration!" + fi + + # Identify alias names from keystore and password provided + + paramName="collector.keystore.alias" + localpropertyfile="/opt/app/VESCollector/etc/collector.properties" + tmpfile="/opt/app/VESCollector/etc/collector.properties.tmp" + + keystore=`grep collector.keystore.file.location $localpropertyfile | tr -d '[:space:]' | cut -d"=" -f2` + keypwdfile=`grep collector.keystore.passwordfile $localpropertyfile | tr -d '[:space:]' | cut -d"=" -f2` + + echo "/usr/bin/keytool -list -keystore $keystore < $keypwdfile | grep "PrivateKeyEntry" | cut -d"," -f1" + tmpalias=`/usr/bin/keytool -list -keystore $keystore < $keypwdfile | grep "PrivateKeyEntry" | cut -d"," -f1` + echo "tmpalias:" $tmpalias + alias=`echo $tmpalias | cut -d":" -f2` + echo "alias:" $alias + sed "s~$paramName=.*~$paramName=$alias~g" $localpropertyfile > $tmpfile + echo `cat $tmpfile > $localpropertyfile` + rm $tmpfile + echo "INFO: Keystore alias updated into configuration" + + else + echo "ERROR: Configuration file /opt/app/KV-Configuration.json missing" + fi + + fi +} + + +## Check usage +if [ $# -ne 1 ]; then + usage + exit +fi + + +## Pre-setting + +# use JAVA_HOME if provided +if [ -z "$JAVA_HOME" ]; then + echo "ERROR: JAVA_HOME not setup" + echo "Startup Aborted!!" + exit 1 + #JAVA=java +else + JAVA=$JAVA_HOME/bin/java +fi + + +MAINCLASS=org.onap.dcae.commonFunction.CommonStartup + +# determine a path separator that works for this platform +PATHSEP=":" +case "$(uname -s)" in + + Darwin) + ;; + + Linux) + ;; + + CYGWIN*|MINGW32*|MSYS*) + PATHSEP=";" + ;; + + *) + ;; +esac + + + + +case $1 in + "start") + collector_configupdate | tee -a ${BASEDIR}/logs/console.txt + collector_start + ;; + "stop") + collector_stop | tee -a ${BASEDIR}/logs/console.txt + ;; + *) + usage + ;; +esac + diff --git a/src/main/scripts/docker-entry.sh b/src/main/scripts/docker-entry.sh index 3b73005f..96cb088c 100644 --- a/src/main/scripts/docker-entry.sh +++ b/src/main/scripts/docker-entry.sh @@ -1,47 +1,53 @@ -#!/bin/sh -### -# ============LICENSE_START======================================================= -# PROJECT -# ================================================================================ -# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# Licensed 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. -# ============LICENSE_END========================================================= -### - -if [ ! -z "$COLLECTOR_IP" ]; then - echo $COLLECTOR_IP $(hostname).dcae.simpledemo.onap.org >> /etc/hosts -fi - -if [ ! -z "$DMAAPHOST" ]; then - if [ -z "$(echo $DMAAPHOST | sed -e 's/[0-9\.]//g')" ]; then - echo "$DMAAPHOST onap-dmaap" >> /etc/hosts - else - echo "onap-dmaap $DMAAPHOST" >> /etc/host.aliases - fi -else - echo "DMAAPHOST ENV NOT SET!! PUBLISH WILL NOT BE SUPPORTED" -fi - -if [ -z "$CONSUL_HOST" ] || [ -z "$CONFIG_BINDING_SERVICE" ] || [ -z "$HOSTNAME" ]; then - echo "INFO: USING STANDARD ALONE CONFIGURATION SETUP" - ## For Container supporting both classic and GEN2 controller - below line should be uncommented, provided service manager package is included - #/opt/app/manager/start-manager.sh -else - echo "INFO: USING DCAEGEN2 CONTROLLER" -fi - -/opt/app/VESCollector/bin/VESrestfulCollector.sh stop -/opt/app/VESCollector/bin/VESrestfulCollector.sh start & - -while true; do sleep 1000; done +#!/bin/sh +### +# ============LICENSE_START======================================================= +# PROJECT +# ================================================================================ +# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed 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. +# ============LICENSE_END========================================================= +### + +if [ ! -z "$COLLECTOR_IP" ]; then + echo $COLLECTOR_IP $(hostname).dcae.simpledemo.onap.org >> /etc/hosts +fi + +if [ ! -z "$DMAAPHOST" ]; then + if [ -z "$(echo $DMAAPHOST | sed -e 's/[0-9\.]//g')" ]; then + echo "$DMAAPHOST onap-dmaap" >> /etc/hosts + else + echo "onap-dmaap $DMAAPHOST" >> /etc/host.aliases + fi +else + echo "DMAAPHOST ENV NOT SET!! PUBLISH WILL NOT BE SUPPORTED" +fi + +if [ -z "$CONSUL_HOST" ] || [ -z "$CONFIG_BINDING_SERVICE" ] || [ -z "$HOSTNAME" ]; then + echo "INFO: USING STANDARD ALONE CONFIGURATION SETUP" + ## For Container supporting both classic and GEN2 controller - below line should be uncommented, provided service manager package is included + #/opt/app/manager/start-manager.sh +else + echo "INFO: USING DCAEGEN2 CONTROLLER" +fi + +/opt/app/VESCollector/bin/VESrestfulCollector.sh stop +/opt/app/VESCollector/bin/VESrestfulCollector.sh start & + +# Add below if config polling should be enabled +# More specific to K8 deployment in ONAP +if [ ! -z "$CBSPOLLTIMER" ]; then + /opt/app/VESCollector/bin/VESConfigPoller.sh & +fi + +while true; do sleep 1000; done -- cgit 1.2.3-korg