From fa520390a79114bf7c11c5bca093c60691553b84 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 15 Sep 2021 15:01:59 +0200 Subject: [hardware-stats] Include new json-based hw reporting Fetch scripts from cgit for now. A bit ugly but this needs to be re-organized first. --- .../opt/openslx/system-check/hooks.d/50-hardware-report | 15 +++++++++++---- core/modules/hardware-stats/module.build | 9 ++++++++- core/modules/hardware-stats/module.conf | 4 ++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/modules/hardware-stats/data/opt/openslx/system-check/hooks.d/50-hardware-report b/core/modules/hardware-stats/data/opt/openslx/system-check/hooks.d/50-hardware-report index a2dbbd56..bc050628 100755 --- a/core/modules/hardware-stats/data/opt/openslx/system-check/hooks.d/50-hardware-report +++ b/core/modules/hardware-stats/data/opt/openslx/system-check/hooks.d/50-hardware-report @@ -10,7 +10,7 @@ disable_remote_logging() { # sends the hardware information of this machine generated by # systemd-hardware_stats_gather in /run/hwreport and /run/hwinfo report_hardware_info() { - local uptime hwreport hwinfo uuid model subnet ret runmode + local uptime hwreport hwinfo uuid model subnet ret runmode jsonfile if [ -z "$SLX_REMOTE_LOG" ]; then disable_remote_logging return 1 @@ -51,7 +51,13 @@ report_hardware_info() { model="$model ($HW_MANUF)" fi # Get IP/subnet size - subnet="$( ip -o -f inet addr show br0 | awk '/scope global/ {print $4}' )" + local primary="${SLX_BRIDGE:-br0}" + subnet="$( ip -o -f inet addr show "$primary" | awk '/scope global/ {print $4}' )" + # Finally, new json-based reporting + jsonfile="$( mktemp )" + if ! python3 /opt/openslx/system-check/collect_hw_info_json.py > "$jsonfile"; then + echo -n "" > "$jsonfile" + fi # just assume the uuid/mac dumped are valid here (its checked often enough :)) echo -n "Submitting to '$SLX_REMOTE_LOG' ... " curl --retry 4 --retry-connrefused --max-time 5 --retry-max-time 15 \ @@ -59,7 +65,8 @@ report_hardware_info() { --data-urlencode "uptime=$uptime" --data-urlencode "realcores=$HW_CORES" --data-urlencode "mbram=$HW_MBRAM" \ --data-urlencode "kvmstate=$HW_KVM" --data-urlencode "cpumodel=$HW_CPUMODEL" --data-urlencode "id44mb=$HW_ID44" \ --data-urlencode "badsectors=$HW_BADSECTORS" --data-urlencode "systemmodel=$model" --data-urlencode "subnet=$subnet" \ - --data-urlencode "runmode=$runmode" --data-urlencode "data@$hwreport" "$SLX_REMOTE_LOG" | grep -q "RESULT=0" + --data-urlencode "runmode=$runmode" --data-urlencode "data@$hwreport" --data-urlencode "json@$jsonfile" \ + "$SLX_REMOTE_LOG" | grep -q "RESULT=0" local ret=$? if [ "$ret" -ne 0 ]; then echo "failed." @@ -67,7 +74,7 @@ report_hardware_info() { return 1 fi echo "succeeded." - rm -f -- "$hwreport" + rm -f -- "$hwreport" "$jsonfile" START=$(( $RANDOM % 5 )) DELAY=$(( $RANDOM % 20 )) cat > "/etc/cron.d/usage_stats" <<-EOF diff --git a/core/modules/hardware-stats/module.build b/core/modules/hardware-stats/module.build index 3c6eb632..994b515b 100644 --- a/core/modules/hardware-stats/module.build +++ b/core/modules/hardware-stats/module.build @@ -4,7 +4,14 @@ fetch_source() { } build() { - : + local dir="${MODULE_BUILD_DIR}/opt/openslx/system-check" + mkdir -p "$dir" + cde "$dir" + local file + for file in collect_hw_info_json.py dmiparser.py; do + wget -O "$file" "https://git.openslx.org/openslx-ng/systemd-init.git/plain/modules.d/bas-hw-collect/scripts/${file}?h=bas" \ + || perror "Could not download $file" + done } post_copy() { diff --git a/core/modules/hardware-stats/module.conf b/core/modules/hardware-stats/module.conf index a452e852..b37a97c7 100644 --- a/core/modules/hardware-stats/module.conf +++ b/core/modules/hardware-stats/module.conf @@ -8,3 +8,7 @@ REQUIRED_BINARIES=" blockdev " +REQUIRED_FILES=" + /opt/openslx/system-check/collect_hw_info_json.py + /opt/openslx/system-check/dmiparser.py +" -- cgit v1.2.3-55-g7522