Initial OpenECOMP policy/engine commit
[policy/engine.git] / packages / base / src / files / bin / monitor.sh
diff --git a/packages/base/src/files/bin/monitor.sh b/packages/base/src/files/bin/monitor.sh
new file mode 100644 (file)
index 0000000..fb311bc
--- /dev/null
@@ -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
+