### # ============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