@cryptotaxi247 / netdata-1 / commits / 05ef3a0c5

Properly propagate errors from installer/updater to kickstart script. (#13802)

This should result in errors in these scripts being properly deaggregated, instead of being always reported as ‘generic’ failures, thus simplifying diagnosis of end-user problems with the installation or update process.

Austin S. Hemmelgarn committed Oct 19, 2022 at 07:10 UTC 05ef3a0c55747ab41abe5e2459d787d9a43a4416
3 files changed +52 -27
packaging/installer/functions.sh
+11 -3
@@ -253,9 +253,17 @@ exit_reason() {
253 EXIT_REASON="${1}"
254 EXIT_CODE="${2}"
255 if [ -n "${NETDATA_PROPAGATE_WARNINGS}" ]; then
256 - export EXIT_REASON
257 - export EXIT_CODE
258 - export NETDATA_WARNINGS="${NETDATA_WARNINGS}${SAVED_WARNINGS}"
256 + if [ -n "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
257 + {
258 + echo "EXIT_REASON=\"${EXIT_REASON}\""
259 + echo "EXIT_CODE=\"${EXIT_CODE}\""
260 + echo "NETDATA_WARNINGS=\"${NETDATA_WARNINGS}${SAVED_WARNINGS}\""
261 + } >> "${NETDATA_SCRIPT_STATUS_PATH}"
262 + else
263 + export EXIT_REASON
264 + export EXIT_CODE
265 + export NETDATA_WARNINGS="${NETDATA_WARNINGS}${SAVED_WARNINGS}"
266 + fi
267 fi
268 fi
269 }
packaging/installer/kickstart.sh
+24 -20
@@ -479,6 +479,26 @@ run() {
479 return ${ret}
480 }
481
482 +run_script() {
483 + set_tmpdir
484 +
485 + export NETDATA_SCRIPT_STATUS_PATH="${tmpdir}/.script-status"
486 +
487 + export NETDATA_SAVE_WARNINGS=1
488 + export NETDATA_PROPAGATE_WARNINGS=1
489 + # shellcheck disable=SC2090
490 + export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
491 +
492 + # shellcheck disable=SC2086
493 + run ${ROOTCMD} "${@}"
494 +
495 + if [ -r "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
496 + # shellcheck disable=SC1090
497 + . "${NETDATA_SCRIPT_STATUS_PATH}"
498 + rm -f "${NETDATA_SCRIPT_STATUS_PATH}"
499 + fi
500 +}
501 +
502 warning() {
503 printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} WARNING ${TPUT_RESET} ${*}"
504 NETDATA_WARNINGS="${NETDATA_WARNINGS}\n - ${*}"
@@ -717,11 +737,7 @@ update() {
737 opts="--interactive"
738 fi
739
720 - export NETDATA_SAVE_WARNINGS=1
721 - export NETDATA_PROPAGATE_WARNINGS=1
722 - # shellcheck disable=SC2090
723 - export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
724 - if run ${ROOTCMD} "${updater}" ${opts} --not-running-from-cron; then
740 + if run_script "${updater}" ${opts} --not-running-from-cron; then
741 progress "Updated existing install at ${ndprefix}"
742 return 0
743 else
@@ -763,11 +779,7 @@ uninstall() {
779 return 0
780 else
781 progress "Found existing netdata-uninstaller. Running it.."
766 - export NETDATA_SAVE_WARNINGS=1
767 - export NETDATA_PROPAGATE_WARNINGS=1
768 - # shellcheck disable=SC2090
769 - export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
770 - if ! run ${ROOTCMD} "${uninstaller}" $FLAGS; then
782 + if ! run_script "${uninstaller}" ${FLAGS}; then
783 warning "Uninstaller failed. Some parts of Netdata may still be present on the system."
784 fi
785 fi
@@ -780,11 +792,7 @@ uninstall() {
792 progress "Downloading netdata-uninstaller ..."
793 download "${uninstaller_url}" "${tmpdir}/netdata-uninstaller.sh"
794 chmod +x "${tmpdir}/netdata-uninstaller.sh"
783 - export NETDATA_SAVE_WARNINGS=1
784 - export NETDATA_PROPAGATE_WARNINGS=1
785 - # shellcheck disable=SC2090
786 - export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
787 - if ! run ${ROOTCMD} "${tmpdir}/netdata-uninstaller.sh" $FLAGS; then
795 + if ! run_script "${tmpdir}/netdata-uninstaller.sh" ${FLAGS}; then
796 warning "Uninstaller failed. Some parts of Netdata may still be present on the system."
797 fi
798 fi
@@ -1675,12 +1683,8 @@ build_and_install() {
1683 opts="${opts} --disable-cloud"
1684 fi
1685
1678 - export NETDATA_SAVE_WARNINGS=1
1679 - export NETDATA_PROPAGATE_WARNINGS=1
1680 - # shellcheck disable=SC2090
1681 - export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
1686 # shellcheck disable=SC2086
1683 - run ${ROOTCMD} ./netdata-installer.sh ${opts}
1687 + run_script ./netdata-installer.sh ${opts}
1688
1689 case $? in
1690 1)
packaging/installer/netdata-updater.sh
+17 -4
@@ -85,9 +85,17 @@ exit_reason() {
85 EXIT_REASON="${1}"
86 EXIT_CODE="${2}"
87 if [ -n "${NETDATA_PROPAGATE_WARNINGS}" ]; then
88 - export EXIT_REASON
89 - export EXIT_CODE
90 - export NETDATA_WARNINGS
88 + if [ -n "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
89 + {
90 + echo "EXIT_REASON=\"${EXIT_REASON}\""
91 + echo "EXIT_CODE=\"${EXIT_CODE}\""
92 + echo "NETDATA_WARNINGS=\"${NETDATA_WARNINGS}\""
93 + } >> "${NETDATA_SCRIPT_STATUS_PATH}"
94 + else
95 + export EXIT_REASON
96 + export EXIT_CODE
97 + export NETDATA_WARNINGS
98 + fi
99 fi
100 fi
101 }
@@ -602,15 +610,20 @@ update_build() {
610 export NETDATA_SAVE_WARNINGS=1
611 export NETDATA_PROPAGATE_WARNINGS=1
612 export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
613 + export NETDATA_SCRIPT_STATUS_PATH="${NETDATA_SCRIPT_STATUS_PATH}"
614 # shellcheck disable=SC2086
615 if ! ${env} ./netdata-installer.sh ${REINSTALL_OPTIONS} --dont-wait ${do_not_start} >&3 2>&3; then
616 + if [ -r "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
617 + # shellcheck disable=SC1090
618 + . "${NETDATA_SCRIPT_STATUS_PATH}"
619 + rm -f "${NETDATA_SCRIPT_STATUS_PATH}"
620 + fi
621 if [ -n "${EXIT_REASON}" ]; then
622 fatal "Failed to rebuild existing netdata install: ${EXIT_REASON}" "U${EXIT_CODE}"
623 else
624 fatal "Failed to rebuild existing netdata reinstall." UI0000
625 fi
626 fi
613 - eval "${env} ./netdata-installer.sh ${REINSTALL_OPTIONS} --dont-wait ${do_not_start}" >&3 2>&3 || fatal "FAILED TO COMPILE/INSTALL NETDATA" U0009
627
628 # We no longer store checksum info here. but leave this so that we clean up all environment files upon next update.
629 sed -i '/NETDATA_TARBALL/d' "${ENVIRONMENT_FILE}"