diff --git a/salt/common/tools/sbin/so-common b/salt/common/tools/sbin/so-common index 5e1ecfbeb..7b5f29c00 100755 --- a/salt/common/tools/sbin/so-common +++ b/salt/common/tools/sbin/so-common @@ -120,6 +120,30 @@ check_elastic_license() { fi } +check_salt_master_status() { + local timeout=$1 + echo "Checking if we can talk to the salt master" + salt-call state.show_top concurrent=true + + return +} + +check_salt_minion_status() { + local timeout=$1 + echo "Checking if the salt minion will respond to jobs" >> "$setup_log" 2>&1 + salt "$MINION_ID" test.ping -t $timeout > /dev/null 2>&1 + local status=$? + if [ $status -gt 0 ]; then + echo " Minion did not respond" >> "$setup_log" 2>&1 + else + echo " Received job response from salt minion" >> "$setup_log" 2>&1 + fi + + return $status +} + + + copy_new_files() { # Copy new files over to the salt dir cd $UPDATE_DIR diff --git a/salt/common/tools/sbin/soup b/salt/common/tools/sbin/soup index efa6000a6..70e300cb0 100755 --- a/salt/common/tools/sbin/soup +++ b/salt/common/tools/sbin/soup @@ -34,7 +34,15 @@ check_err() { local err_msg="Unhandled error occured, please check $SOUP_LOG for details." [[ $ERR_HANDLED == true ]] && exit $exit_code + if [[ $exit_code -ne 0 ]]; then + + set +e + systemctl_func "start" "$cron_service_name" + systemctl_func "start" "salt-master" + systemctl_func "start" "salt-minion" + enable_highstate + printf '%s' "Soup failed with error $exit_code: " case $exit_code in 2) @@ -91,9 +99,7 @@ check_err() { if [[ $exit_code -ge 64 && $exit_code -le 113 ]]; then echo "$err_msg" fi - set +e - systemctl_func "start" "$cron_service_name" - enable_highstate + exit $exit_code fi @@ -1014,6 +1020,17 @@ main() { echo "### Preparing soup at $(date) ###" echo "" + set_os + set_cron_service_name + if ! check_salt_master_status; then + echo "Could not talk to salt master" + echo "Please run 'systemctl status salt-master' to ensure the salt-master service is running and check the log at /opt/so/log/salt/master." + echo "SOUP will now attempt to start the salt-master service and exit." + exit 1 + fi + + echo "This node can communicate with the salt-master." + echo "Checking to see if this is a manager." echo "" require_manager @@ -1049,8 +1066,6 @@ main() { echo "Verifying we have the latest soup script." verify_latest_update_script echo "" - set_os - set_cron_service_name set_palette check_elastic_license echo "" diff --git a/setup/so-functions b/setup/so-functions index accc0e991..26c39a8d7 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -249,36 +249,6 @@ check_service_status() { } -check_salt_master_status() { - local timeout=$1 - echo "Checking if we can talk to the salt master" >> "$setup_log" 2>&1 - salt-call saltutil.kill_all_jobs > /dev/null 2>&1 - salt-call state.show_top -t $timeout > /dev/null 2>&1 - local status=$? - if [ $status -gt 0 ]; then - echo " Could not talk to salt master" >> "$setup_log" 2>&1 - return 1; - else - echo " Can talk to salt master" >> "$setup_log" 2>&1 - return 0; - fi - -} - -check_salt_minion_status() { - local timeout=$1 - echo "Checking if the salt minion will respond to jobs" >> "$setup_log" 2>&1 - salt "$MINION_ID" test.ping -t $timeout > /dev/null 2>&1 - local status=$? - if [ $status -gt 0 ]; then - echo " Minion did not respond" >> "$setup_log" 2>&1 - return 1; - else - echo " Received job response from salt minion" >> "$setup_log" 2>&1 - return 0; - fi -} - check_soremote_pass() { check_pass_match "$SOREMOTEPASS1" "$SOREMOTEPASS2" "SCMATCH" }