#!/bin/bash #------------------------------------------------------------------------------ set -u function msg () { echo -e "$*"; } function warnmsg () { msg "\\nWARNING: ${1:-Unknown Warning}\\n"; WarningCount+=1; } function errmsg () { msg "\\nERROR: ${1:-Unknown Error}\\n"; ErrorCount+=1; } function bail () { errmsg "${1:-Unknown Error}"; exit "${2:-1}"; } #------------------------------------------------------------------------------ # Functions run($cmd, $desc) # # This function is similar to functions defined in SDP core libraries, but we # need to duplicate them here since this script runs before the SDP is # available on the machine (and we require no external dependencies for this # script). function run { cmd="${1:-echo Testing run}" desc="${2:-}" [[ -n "$desc" ]] && msg "$desc" msg "Running: $cmd" if [[ "$NoOp" -eq 0 ]]; then $cmd else msg "NO_OP: Would execute: $cmd" fi return $? } #------------------------------------------------------------------------------ # Declarations and Environment declare Version=1.0.4 declare -i ErrorCount=0 declare -i WarningCount=0 declare -i ResetNeeded=0 declare -i NoOp=1 declare CustomResetScript="${HMS_CUSTOM_RESET_SCRIPT:-}" #------------------------------------------------------------------------------ # Command Line Parsing [[ "$*" == "-y" ]] && NoOp=0 #------------------------------------------------------------------------------ # Main Program msg "Started ${0##*/} v$Version as $USER@${HOSTNAME%%.*} at $(date)." msg "\\nStopping running hms services (if running)." for svc in /p4/hms/bin/p4d_hms_init /p4/hms/bin/p4broker_hms_init; do if [[ -x "$svc" ]]; then ResetNeeded=1 run "$svc stop" "Stopping service ${svc##*/}." ||\ warnmsg "Failed to stop service ${svc##*/}." fi done msg "\\nDisabling and removing systemd services (if any)." for systemdService in p4d_hms p4broker_hms p4p_hms; do systemdServiceFile="/etc/systemd/system/${systemdService}.service" if [[ -e "$systemdServiceFile" ]]; then ResetNeeded=1 run "sudo systemctl disable $systemdService" ||\ errmsg "Failed to disable systemd service $systemdService." run "sudo rm -f $systemdServiceFile" ||\ errmsg "Failed to remove systemd service file: $systemdServiceFile" fi done msg "\\nRemoving /hx*/p4/hms and /p4/hms folders if they exist." for d in /hxdepots/p4/hms/ /hxmetadata/p4/hms/ /hxlogs/p4/hms/ /p4/hms/; do if [[ -d "$d" ]]; then ResetNeeded=1 run "rm -rf $d" "Removing dir: $d" ||\ errmsg "Failed to remove dir: $d" else msg "No dir to remove: $d" fi done msg "\\nRemoving hms-specific files (if any)." for f in /p4/common/config/p4_hms.* /p4/.p4config.SDP /p4/common/bin/p4*_hms_* /p4/sdp/Server/Unix/setup/mkdirs.hms.*; do if [[ -e "$f" ]]; then ResetNeeded=1 run "rm -f $f" "Removing file $f" ||\ errmsg "Failed to remove file: $f" else msg "No file to remove: $f" fi done if [[ -x "$CustomResetScript" ]]; then run "$CustomResetScript" \ "Executing custom reset script specified with \$HMS_CUSTOM_RESET_SCRIPT." ||\ errmsg "Custom reset script returned non-zero exit code." else msg "No custom reset script found." fi if [[ "$ErrorCount" -eq 0 ]]; then if [[ "$WarningCount" -eq 0 ]]; then if [[ "$ResetNeeded" -eq 1 ]]; then if [[ "$NoOp" -eq 0 ]]; then msg "\\nSUCCESS: HMS has been reset." else msg "\\nSUCCESS: HMS would have been reset (was not without -y)." fi else msg "\\nSUCCESS: HMS reset was not needed." fi else msg "\\nSUCCESS: HMS has been reset, but with $WarningCount warnings." fi else msg "\\nHMS reset has completed, but with $ErrorCount errors and $WarningCount warnings." fi [[ "$NoOp" -eq 1 && "$ResetNeeded" -eq 1 ]] && warnmsg "This was preview mode; reset did not actually occur. Specify '-y' to perform an actual reset.\\n" exit "$ErrorCount"
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#7 | 29182 | C. Thomas Tyler |
Moved HMS files from /p4/common/bin -> /p4/common/site/bin. Moved HMS files from /p4/common/lib -> /p4/common/site/lib. Removed dependency on SDP libs so that HMS can be deployed with a wider variety of SDP versions. |
||
#6 | 27308 | C. Thomas Tyler | Fixed issue with assuming USER is always defined. | ||
#5 | 26639 | C. Thomas Tyler | More thorough cleanup of prior HMS installs. | ||
#4 | 26638 | C. Thomas Tyler | Cosmetic updates. | ||
#3 | 25712 | C. Thomas Tyler |
Made hms_ts_setup.sh shellcheck compliant. Removed custom hacks for Battle School demo from hms_ts_setup.sh. Added generic mechanism for calling custom scripts by defining environment variables referencing them (undoc'd) to both hms_ts_setup.sh and reset_hms.sh. |
||
#2 | 25711 | C. Thomas Tyler | Enhanced output. | ||
#1 | 25654 | C. Thomas Tyler |
Added simple script to reset what hms_ts_setup.sh does, as a testing utility. |