summaryrefslogtreecommitdiffstats
path: root/packaging
diff options
context:
space:
mode:
authorAustin S. Hemmelgarn <austin@netdata.cloud>2022-10-19 07:10:28 -0400
committerGitHub <noreply@github.com>2022-10-19 07:10:28 -0400
commit05ef3a0c55747ab41abe5e2459d787d9a43a4416 (patch)
treea62ce11a1b2277ddc1aeecd44b1dd19e4bce5d0f /packaging
parentd41cded5def1b1046062be9e0288c214e2e088b9 (diff)
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.
Diffstat (limited to 'packaging')
-rw-r--r--packaging/installer/functions.sh14
-rwxr-xr-xpackaging/installer/kickstart.sh44
-rwxr-xr-xpackaging/installer/netdata-updater.sh21
3 files changed, 52 insertions, 27 deletions
diff --git a/packaging/installer/functions.sh b/packaging/installer/functions.sh
index d3421ea80f..e354ac651e 100644
--- a/packaging/installer/functions.sh
+++ b/packaging/installer/functions.sh
@@ -253,9 +253,17 @@ exit_reason() {
EXIT_REASON="${1}"
EXIT_CODE="${2}"
if [ -n "${NETDATA_PROPAGATE_WARNINGS}" ]; then
- export EXIT_REASON
- export EXIT_CODE
- export NETDATA_WARNINGS="${NETDATA_WARNINGS}${SAVED_WARNINGS}"
+ if [ -n "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
+ {
+ echo "EXIT_REASON=\"${EXIT_REASON}\""
+ echo "EXIT_CODE=\"${EXIT_CODE}\""
+ echo "NETDATA_WARNINGS=\"${NETDATA_WARNINGS}${SAVED_WARNINGS}\""
+ } >> "${NETDATA_SCRIPT_STATUS_PATH}"
+ else
+ export EXIT_REASON
+ export EXIT_CODE
+ export NETDATA_WARNINGS="${NETDATA_WARNINGS}${SAVED_WARNINGS}"
+ fi
fi
fi
}
diff --git a/packaging/installer/kickstart.sh b/packaging/installer/kickstart.sh
index e3bfac4edc..5ea16380f9 100755
--- a/packaging/installer/kickstart.sh
+++ b/packaging/installer/kickstart.sh
@@ -479,6 +479,26 @@ run() {
return ${ret}
}
+run_script() {
+ set_tmpdir
+
+ export NETDATA_SCRIPT_STATUS_PATH="${tmpdir}/.script-status"
+
+ export NETDATA_SAVE_WARNINGS=1
+ export NETDATA_PROPAGATE_WARNINGS=1
+ # shellcheck disable=SC2090
+ export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
+
+ # shellcheck disable=SC2086
+ run ${ROOTCMD} "${@}"
+
+ if [ -r "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
+ # shellcheck disable=SC1090
+ . "${NETDATA_SCRIPT_STATUS_PATH}"
+ rm -f "${NETDATA_SCRIPT_STATUS_PATH}"
+ fi
+}
+
warning() {
printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} WARNING ${TPUT_RESET} ${*}"
NETDATA_WARNINGS="${NETDATA_WARNINGS}\n - ${*}"
@@ -717,11 +737,7 @@ update() {
opts="--interactive"
fi
- export NETDATA_SAVE_WARNINGS=1
- export NETDATA_PROPAGATE_WARNINGS=1
- # shellcheck disable=SC2090
- export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
- if run ${ROOTCMD} "${updater}" ${opts} --not-running-from-cron; then
+ if run_script "${updater}" ${opts} --not-running-from-cron; then
progress "Updated existing install at ${ndprefix}"
return 0
else
@@ -763,11 +779,7 @@ uninstall() {
return 0
else
progress "Found existing netdata-uninstaller. Running it.."
- export NETDATA_SAVE_WARNINGS=1
- export NETDATA_PROPAGATE_WARNINGS=1
- # shellcheck disable=SC2090
- export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
- if ! run ${ROOTCMD} "${uninstaller}" $FLAGS; then
+ if ! run_script "${uninstaller}" ${FLAGS}; then
warning "Uninstaller failed. Some parts of Netdata may still be present on the system."
fi
fi
@@ -780,11 +792,7 @@ uninstall() {
progress "Downloading netdata-uninstaller ..."
download "${uninstaller_url}" "${tmpdir}/netdata-uninstaller.sh"
chmod +x "${tmpdir}/netdata-uninstaller.sh"
- export NETDATA_SAVE_WARNINGS=1
- export NETDATA_PROPAGATE_WARNINGS=1
- # shellcheck disable=SC2090
- export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
- if ! run ${ROOTCMD} "${tmpdir}/netdata-uninstaller.sh" $FLAGS; then
+ if ! run_script "${tmpdir}/netdata-uninstaller.sh" ${FLAGS}; then
warning "Uninstaller failed. Some parts of Netdata may still be present on the system."
fi
fi
@@ -1675,12 +1683,8 @@ build_and_install() {
opts="${opts} --disable-cloud"
fi
- export NETDATA_SAVE_WARNINGS=1
- export NETDATA_PROPAGATE_WARNINGS=1
- # shellcheck disable=SC2090
- export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
# shellcheck disable=SC2086
- run ${ROOTCMD} ./netdata-installer.sh ${opts}
+ run_script ./netdata-installer.sh ${opts}
case $? in
1)
diff --git a/packaging/installer/netdata-updater.sh b/packaging/installer/netdata-updater.sh
index 6313a92dac..4a52b035aa 100755
--- a/packaging/installer/netdata-updater.sh
+++ b/packaging/installer/netdata-updater.sh
@@ -85,9 +85,17 @@ exit_reason() {
EXIT_REASON="${1}"
EXIT_CODE="${2}"
if [ -n "${NETDATA_PROPAGATE_WARNINGS}" ]; then
- export EXIT_REASON
- export EXIT_CODE
- export NETDATA_WARNINGS
+ if [ -n "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
+ {
+ echo "EXIT_REASON=\"${EXIT_REASON}\""
+ echo "EXIT_CODE=\"${EXIT_CODE}\""
+ echo "NETDATA_WARNINGS=\"${NETDATA_WARNINGS}\""
+ } >> "${NETDATA_SCRIPT_STATUS_PATH}"
+ else
+ export EXIT_REASON
+ export EXIT_CODE
+ export NETDATA_WARNINGS
+ fi
fi
fi
}
@@ -602,15 +610,20 @@ update_build() {
export NETDATA_SAVE_WARNINGS=1
export NETDATA_PROPAGATE_WARNINGS=1
export NETDATA_WARNINGS="${NETDATA_WARNINGS}"
+ export NETDATA_SCRIPT_STATUS_PATH="${NETDATA_SCRIPT_STATUS_PATH}"
# shellcheck disable=SC2086
if ! ${env} ./netdata-installer.sh ${REINSTALL_OPTIONS} --dont-wait ${do_not_start} >&3 2>&3; then
+ if [ -r "${NETDATA_SCRIPT_STATUS_PATH}" ]; then
+ # shellcheck disable=SC1090
+ . "${NETDATA_SCRIPT_STATUS_PATH}"
+ rm -f "${NETDATA_SCRIPT_STATUS_PATH}"
+ fi
if [ -n "${EXIT_REASON}" ]; then
fatal "Failed to rebuild existing netdata install: ${EXIT_REASON}" "U${EXIT_CODE}"
else
fatal "Failed to rebuild existing netdata reinstall." UI0000
fi
fi
- eval "${env} ./netdata-installer.sh ${REINSTALL_OPTIONS} --dont-wait ${do_not_start}" >&3 2>&3 || fatal "FAILED TO COMPILE/INSTALL NETDATA" U0009
# We no longer store checksum info here. but leave this so that we clean up all environment files upon next update.
sed -i '/NETDATA_TARBALL/d' "${ENVIRONMENT_FILE}"