diff --git a/nodemgmt-scripts.sh b/nodemgmt-scripts.sh index d3afb6a8..8fb99d56 100755 --- a/nodemgmt-scripts.sh +++ b/nodemgmt-scripts.sh @@ -734,6 +734,95 @@ DOWNLIST(){ echo } +MAINTENANCE_MODE(){ + if [ "${NM_NODETYPES[${1^^}]}" != "" ]; then + ntss=${1^^} + ntypesel=(${ntss}) + NMG_ACTION=${2} + else + ntss="" + ntypesel=(${NM_NODE_TYPES[@]}) + [ "${1}" == "sync" ] && NMG_ACTION=repl || NMG_ACTION=${1} + fi + + PRI_CW=40 + declare -i cw; declare -i spc1; declare -i c + + for NODETYPE in "${ntypesel[@]}"; do + + dockers=${NODETYPE}_DOCKERS_CHECK[@] + hosts=${NODETYPE}_HOSTS[@] + + NTHOSTS=${NODETYPE}_HOSTS[@] + + if ([[ ! -v ${NODETYPE}_DOCKERS_CHECK ]] && [ "${NMG_ACTION}" == "dockers" ]) || ([ "${NM_SERVICES_CHECK[${NODETYPE}]}" == "" ] && [ "${NMG_ACTION}" == "services" ]); then + GOFORCHECK=false; + else + GOFORCHECK=true; + fi + + if [ ${GOFORCHECK} = true ]; then + + if [ "${NMG_ACTION}" != "check" ]; then + echo -e "${idsST[Bold]}"; DIVIDER + if [ "${NMG_ACTION}" == "dockers" ]; then + echo -e "${idsCL[LightYellow]} ${NM_NODETYPES[$NTYPE]}-Node Docker Status${idsCL[Default]}" + else + echo -e "${idsCL[LightYellow]} ${NM_NODETYPES[$NTYPE]}-Node Service Status${idsCL[Default]}" + fi + DIVIDER . lightYellow; echo -en "${idsST[Reset]}" + fi + for nip in "${!NTHOSTS}"; do + echo -e " ${idsST[Bold]}${idsCL[LightCyan]}${NM_HOSTNAMES[${nip}]} [${nip}]${idsST[Reset]}${idsCL[Default]}" + DIVIDER false lightCyan + + + ######################## + ## SERVICES CHECK + ######################## + if [ "${NMG_ACTION}" != "dockers" ] && [ "${NM_SERVICES_CHECK[${NODETYPE}]}" != "" ]; then + echo -e "${idsCL[Green]} System Service(s) Status${idsCL[Default]}" + DIVIDER . green 52 + + srvcs=${NODETYPE}_SERVICES_CHECK[@]; + srvcstotest="$(join_by " " ${!srvcs})" + for srvc in "${!srvcs}"; do + c=0; cw=${PRI_CW}; spc='' + spc1=${cw}-${#NM_SERVICE_DESC[${srvc}]} + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]} ${NM_SERVICE_DESC[${srvc}]}${spc}${idsCL[Default]}: " + echo -e "${idsCL[LightGreen]}Running${idsCL[Default]}" + done + + fi + + ######################## + ## DOCKER CHECK + ######################## + if [[ -v ${NODETYPE}_DOCKERS_CHECK ]] && [ "${NMG_ACTION}" != "services" ]; then + if [ "${NMG_ACTION}" != "check" ]; then + [ "${NMG_ACTION}" == "" ] && [ "${NM_SERVICES_CHECK[${NODETYPE}]}" != "" ] && echo + echo -e "${idsCL[Green]} Docker Service(s) Status${idsCL[Default]}" + DIVIDER . green 52 + fi + for docker in "${!dockers}"; do + c=0; cw=${PRI_CW}; spc='' + spc1=`expr ${cw} - ${#NM_DOCKER_DESC[${docker}]}` + until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + echo -en "${idsCL[White]} ${NM_DOCKER_DESC[${docker}]}$spc${idsCL[Default]}: " + echo -en "${idsCL[LightGreen]}Running${idsCL[Default]}" + done + fi + + echo + done + + fi + + done + +} + SETUPSSH(){ echo -e "\n${idsST[Bold]}${idsCL[LightCyan]}Beginning SSH verifiication, you may get prompted for crednetials along the way\n" for NTYPE in "${NM_NODE_TYPES[@]}"; do @@ -878,6 +967,7 @@ GUI(){ else DOWNLIST ${2} fi;; + mm) MAINTENANCE_MODE ${2} ${3};; status) if [ "${2}" == "freespace" ]; then STATUS freespace ${3}