mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-01-27 17:37:18 +01:00
self-diagnostics: compile logs in case of failure
This commit is contained in:
parent
21cdf07e54
commit
97a845fda2
2 changed files with 80 additions and 71 deletions
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=self-diagnostics
|
||||
PKG_VERSION:=1.0.15
|
||||
PKG_VERSION:=1.0.16
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
|
|
|
|||
|
|
@ -13,29 +13,6 @@ COMPOPTS=""
|
|||
TIMEOUT=5
|
||||
JSON_OUT_BUFFER=""
|
||||
|
||||
cleanup()
|
||||
{
|
||||
if [ -d "${REPORT_TEMP_DIR}" ]; then
|
||||
rm -rf ${REPORT_TEMP_DIR}
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
help()
|
||||
{
|
||||
echo "Generate self diagnostics report"
|
||||
echo
|
||||
echo "Syntax: $0 [-m|h|l|j]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " l List available module(s)"
|
||||
echo " m Generate system report of specific module(s)"
|
||||
echo " j Enable JSON output"
|
||||
echo " h Print this help"
|
||||
echo
|
||||
}
|
||||
|
||||
log()
|
||||
{
|
||||
log_file="${REPORT_TEMP_DIR}/execution.log"
|
||||
|
|
@ -52,6 +29,85 @@ err_log()
|
|||
echo "[$(date +%Y:%m:%d-%H:%M:%S) ERR] $*" >> ${log_file}
|
||||
}
|
||||
|
||||
generate_report()
|
||||
{
|
||||
local filename
|
||||
|
||||
filename="${REPORT_PATH}/${REPORT_NAME}"
|
||||
|
||||
[ -f "${filename}.tar" ] && rm "${filename}.tar"
|
||||
[ -f "${filename}.tar.gz" ] && rm "${filename}.tar.gz"
|
||||
|
||||
log "# Report generation completed #"
|
||||
cd ${REPORT_TEMP_DIR} && {
|
||||
filename="${filename}.tar"
|
||||
tar -cf "${filename}" *
|
||||
}
|
||||
|
||||
if [ -n "$COMPOPTS" ]; then
|
||||
gzip -${COMPOPTS} -f "${filename}"
|
||||
filename="${filename}.gz"
|
||||
fi
|
||||
|
||||
# Move logs if failed to generate tar
|
||||
if [ ! -f "${filename}" ]; then
|
||||
mv ${REPORT_TEMP_DIR}/*.log ${REPORT_PATH}/
|
||||
fi
|
||||
|
||||
if [ "${JSON_OUT}" -eq 1 ]; then
|
||||
json_init
|
||||
json_load "${JSON_OUT_BUFFER}"
|
||||
if [ -f "${filename}" ]; then
|
||||
json_add_string result "${filename}"
|
||||
else
|
||||
log "error: Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
json_add_string error "Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
fi
|
||||
json_dump
|
||||
else
|
||||
if [ -f "${filename}" ]; then
|
||||
echo "result: ${filename}"
|
||||
else
|
||||
log "error: Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
echo "error: Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup()
|
||||
{
|
||||
if [ -d "${REPORT_TEMP_DIR}" ]; then
|
||||
generate_report
|
||||
rm -rf ${REPORT_TEMP_DIR}
|
||||
fi
|
||||
}
|
||||
|
||||
term_cleanup()
|
||||
{
|
||||
if [ -d "${REPORT_TEMP_DIR}" ]; then
|
||||
err_log "Exiting due to TERM/INT signal"
|
||||
generate_report
|
||||
rm -rf ${REPORT_TEMP_DIR}
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
trap term_cleanup INT TERM
|
||||
|
||||
help()
|
||||
{
|
||||
echo "Generate self diagnostics report"
|
||||
echo
|
||||
echo "Syntax: $0 [-m|h|l|j]"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " l List available module(s)"
|
||||
echo " m Generate system report of specific module(s)"
|
||||
echo " j Enable JSON output"
|
||||
echo " h Print this help"
|
||||
echo
|
||||
}
|
||||
|
||||
# Alias ubus to have a smaller 5-second timeout on all subsequent calls
|
||||
ubus()
|
||||
{
|
||||
|
|
@ -333,51 +389,6 @@ list_modules()
|
|||
fi
|
||||
}
|
||||
|
||||
generate_report()
|
||||
{
|
||||
local filename
|
||||
|
||||
filename="${REPORT_PATH}/${REPORT_NAME}"
|
||||
|
||||
[ -f "${filename}.tar" ] && rm "${filename}.tar"
|
||||
[ -f "${filename}.tar.gz" ] && rm "${filename}.tar.gz"
|
||||
|
||||
log "# Report generation completed #"
|
||||
cd ${REPORT_TEMP_DIR} && {
|
||||
filename="${filename}.tar"
|
||||
tar -cf "${filename}" *
|
||||
}
|
||||
|
||||
if [ -n "$COMPOPTS" ]; then
|
||||
gzip -${COMPOPTS} -f "${filename}"
|
||||
filename="${filename}.gz"
|
||||
fi
|
||||
|
||||
# Move logs if failed to generate tar
|
||||
if [ ! -f "${filename}" ]; then
|
||||
mv ${REPORT_TEMP_DIR}/*.log ${REPORT_PATH}/
|
||||
fi
|
||||
|
||||
if [ "${JSON_OUT}" -eq 1 ]; then
|
||||
json_init
|
||||
json_load "${JSON_OUT_BUFFER}"
|
||||
if [ -f "${filename}" ]; then
|
||||
json_add_string result "${filename}"
|
||||
else
|
||||
log "error: Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
json_add_string error "Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
fi
|
||||
json_dump
|
||||
else
|
||||
if [ -f "${filename}" ]; then
|
||||
echo "result: ${filename}"
|
||||
else
|
||||
log "error: Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
echo "error: Failed to generate report tar, check logs in ${REPORT_PATH}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
[ ! -d "${SPEC_DIR}" ] && {
|
||||
log "# ${SPEC_DIR} does not exist"
|
||||
exit 1
|
||||
|
|
@ -413,5 +424,3 @@ if [ -z "${modules}" ]; then
|
|||
else
|
||||
generate_module ${modules}
|
||||
fi
|
||||
|
||||
generate_report
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue