#!/usr/local/bin/bash Version=1.0.4 # Usage: failover_p4d_from_this_host.sh SDP_INSTANCE Style Type BackupHost NO_OP # This is intended to be called by 'hms', not directly by a human. # Micro-functions. function msg () { echo -e "$*"; } function bail () { msg "\nError: ${1:-Unknown Error}\n"; exit ${2:-1}; } function usage () { msg "Usage:\n\t$UsageSummary\n"; exit 2; } function cmd () { if [[ $NO_OP -eq 0 ]]; then msg "Running: $*" $* return $? else msg "NO_OP: Would run: $*" fi } # Do nothing unless usage is correct. export SDP_INSTANCE=${1:-Unset} declare Style=${2:-Unset} declare Type=${3:-Unset} declare BackupHost=${4:-Unset} declare NO_OP=${5:-Unset} declare ThisScript=${0##*/} declare UsageSummary="$ThisScript SDP_INSTANCE Style Type BackupHost NO_OP" declare P4DInitScript=/p4/$SDP_INSTANCE/bin/p4d_${SDP_INSTANCE}_init [[ $# -eq 5 ]] || bail "Bad Usage! Usage:\n\t$UsageSummary\n" msg "Starting $ThisScript v$Version on ${HOSTNAME%%.*} at $(date)." msg "Args: I=$SDP_INSTANCE S=$Style T=$Type BH=$BackupHost NO_OP=$NO_OP" # Load SDP controlled shell environment. source /p4/common/bin/p4_vars "$SDP_INSTANCE" || \ bail "Failed to load SDP environment for instance $SDP_INSTANCE." [[ $(id -u -n) == $OSUSER ]] || bail "$0 can only be run by $OSUSER" [[ $NO_OP -eq 1 ]] && msg "NO_OP: Preview Mode Enabled." [[ -x $P4DInitScript ]] || bail "$P4DInitScript is not executable." # For unscheduled failover, we attempt to top the server to prevent # split brain, and nothing more. The host alias must be also be # changed externally to this automation. cmd $P4DInitScript stop [[ ${SERVERID^^} == *"MASTER"* ]] ||\ bail "Instance $SDP_INSTANCE ServerID ($SERVERID) indicates it not a master server! Aborting further failover processing on host ${HOSTNAME%%.*}." # For scheduled failover, we go further and preserve the original journal # file verbatim. if [[ $Style == Scheduled ]]; then cmd scp -q -p $P4JOURNAL $BackupHost:$P4JOURNAL.from_old_master ||\ bail "Failed to scp $P4JOURNAL to backup host $BackupHost:$P4JOURNAL.from_old_master." fi
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 25596 | C. Thomas Tyler |
Released SDP 2019.2.25594 (2019/05/02). Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'. |
||
#3 | 25245 | C. Thomas Tyler |
Released SDP 2019.1.25238 (2019/03/02). Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'. |
||
#2 | 22185 | C. Thomas Tyler |
Released SDP 2017.2.22177 (2017/05/17). Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'. |
||
#1 | 20767 | C. Thomas Tyler |
Released SDP 2016.2.20755 (2016/09/29). Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'. |
||
//guest/perforce_software/sdp/dev/Server/Unix/p4/common/hms/scripts/failover_p4d_from_this_host.sh | |||||
#1 | 20745 | C. Thomas Tyler |
Approving as is since it isn't changing core SDP functionality, and reviewing it all line by line will take some time. We can do that as we move forward with it. First addition of HMS v1.0 files. This change is a soft launch HMS for initial deployment and testing. Updates to HMS-related files are expected and will bypass pre-commit code review until stabilized. |