diff options
Diffstat (limited to 'packages/base/src/files/bin/monitor.sh')
-rw-r--r-- | packages/base/src/files/bin/monitor.sh | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/packages/base/src/files/bin/monitor.sh b/packages/base/src/files/bin/monitor.sh new file mode 100644 index 000000000..fb311bc04 --- /dev/null +++ b/packages/base/src/files/bin/monitor.sh @@ -0,0 +1,139 @@ +### +# ============LICENSE_START======================================================= +# ECOMP Policy Engine +# ================================================================================ +# 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========================================================= +### + +#!/bin/bash + +function usage() { + echo -n "syntax: $(basename $0) " + echo "[--debug]" +} + +function log() { + echo "$(date +"%Y-%m-%d_%H-%M-%S") $1" >> ${POLICY_HOME}/logs/monitor.log +} + +function monitor() { + if [[ $DEBUG == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + COMPONENT=$1 + STATUS=$2 + + if [[ -z ${COMPONENT} ]]; then + log "WARNING: invalid invocation: no component provided" + return + fi + + if [[ -z ${STATUS} ]]; then + log "WARNING: invalid invocation: no on/off/uninstalled switch provided for ${COMPONENT}" + return + fi + + if [[ "${STATUS}" == "off" ]]; then + off ${COMPONENT} + else + if [[ "${STATUS}" == "on" ]]; then + on ${COMPONENT} + fi + fi +} + +function on() { + if [[ $DEBUG == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + COMPONENT=$1 + + ${POLICY_HOME}/etc/init.d/${COMPONENT} status + if [[ $? != 0 ]]; then + log "starting ${COMPONENT}" + + ${POLICY_HOME}/etc/init.d/${COMPONENT} umstart + else + log "OK: ${COMPONENT} (UP)" + fi +} + +function off() { + if [[ $DEBUG == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + COMPONENT=$1 + + ${POLICY_HOME}/etc/init.d/${COMPONENT} status + if [[ $? != 0 ]]; then + log "OK: ${COMPONENT} (DOWN)" + + else + log "stopping ${COMPONENT}" + ${POLICY_HOME}/etc/init.d/${COMPONENT} umstop + fi +} + +function config() { + if [[ $DEBUG == y ]]; then + echo "-- ${FUNCNAME[0]} --" + set -x + fi + + CONF_FILE=${POLICY_HOME}/etc/monitor/monitor.cfg + while read line || [ -n "${line}" ]; do + if [[ -n ${line} ]] && [[ ${line} != *#* ]]; then + component=$(echo "${line}" | awk -F = '{print $1;}') + status=$(echo "${line}" | awk -F = '{print $2;}') + if [[ -n ${component} ]] && [[ -n ${status} ]]; then + monitor ${component} ${status} + fi + fi + done < "${CONF_FILE}" + return 0 +} + +log "Enter monitor" + +DEBUG=n +until [[ -z "$1" ]]; do + case $1 in + -d|--debug|debug) DEBUG=y + set -x + ;; + *) usage + exit 1 + ;; + esac + shift +done + +if pidof -o %PPID -x $(basename $0) > /dev/null 2>&1; then + log "WARNING: $(basename $0) from the previous iteration still running. Exiting." + exit 1 +fi + +. ${POLICY_HOME}/etc/profile.d/env.sh + + +config + |