Code Monkey home page Code Monkey logo

Comments (8)

jimklimov avatar jimklimov commented on June 2, 2024

Interesting bits from a debug run:

  • Original ups.conf contents with comments, indentations, blank lines, etc.:
# cat ups.conf
#nowait
#debug_min = 6
debug_min = 0

[dummy]
    driver = dummy-ups
    #debug_min = 6
    port = dummy.dev

[eco650]
        driver = "usbhid-ups"
        port = "auto"
        vendorid = "0463"
        productid = "FFFF"
        product = "Ellipse ECO"
        desc = "Eaton Ellipse ECO 650"
        serial = "000000000"
        vendor = "EATON"
        bus = "003"
        #pollonly
        #debug_min = 0
        debug_min = 2
  • NDE artifacts (made a year ago and unchanged for way too long!)
:; cd /etc/systemd/system && grep . nut-driver@*.service.d/*

[email protected]/nut-driver-enumerator-generated-checksum.conf:[Service]
[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM_GLOBAL=e66f236c1cb34ba08a795537493bc884'

[email protected]/nut-driver-enumerator-generated-devicename.conf:[Service]
[email protected]/nut-driver-enumerator-generated-devicename.conf:Environment='DEVICE="dummy"'

[email protected]/nut-driver-enumerator-generated-checksum.conf:[Service]
[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM=8a4a7aa5a28a7d38f1961f4d7c3913c9'

[email protected]/nut-driver-enumerator-generated-devicename.conf:[Service]
[email protected]/nut-driver-enumerator-generated-devicename.conf:Environment='DEVICE="eco650"'

[email protected]/nut-driver-enumerator-generated.conf:# Customization generated Tue May  9 10:10:25 UTC 2023 by nut-driver-enumerator for NUT device 'eco650'
[email protected]/nut-driver-enumerator-generated.conf:# DO NOT EDIT: This file would be removed or overwritten by that service
[email protected]/nut-driver-enumerator-generated.conf:[Unit]
[email protected]/nut-driver-enumerator-generated.conf:Description=Network UPS Tools - device driver for NUT device 'eco650'
[email protected]/nut-driver-enumerator-generated.conf:Wants=systemd-udev.service systemd-udev-settle.service
[email protected]/nut-driver-enumerator-generated.conf:After=systemd-udev.service systemd-udev-settle.service

:; ls -la  nut-driver@*.service.d/*
-rw-r--r-- 1 root root  81 Apr 19  2023 [email protected]/nut-driver-enumerator-generated-checksum.conf
-rw-r--r-- 1 root root  39 Dec  1 15:32 [email protected]/nut-driver-enumerator-generated-devicename.conf
-rw-r--r-- 1 root root  74 May  9  2023 [email protected]/nut-driver-enumerator-generated-checksum.conf
-rw-r--r-- 1 root root  40 Dec  1 15:32 [email protected]/nut-driver-enumerator-generated-devicename.conf
-rw-r--r-- 1 root root 364 May  9  2023 [email protected]/nut-driver-enumerator-generated.conf
  • Sanitized config is slurped reasonably:
+ UPSCONF_DATA=debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ [ 218 != 0 ]
  • SDP (Section-Driver-Port) highlight is determined well:
UPSCONF_DATA_SDP=[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
+ [ 218 != 0 ]
  • TO CHECK: Should "218" (char count of UPSCONF_DATA) be consulted in both places?
  • List of devices in ups.conf is correct:
UPSLIST_FILE=dummy
eco650
+ [ 12 = 0 ]
  • ...matches the known services:
UPSLIST_SVCS=dummy
eco650
+ [ 12 = 0 ]
  • global section content found and checksummed:
+ echo debug_min=0
+ md5sum
+ awk {print $1}
+ _MD5=e66f236c1cb34ba08a795537493bc884
...
+ grep Environment='SECTION_CHECKSUM_GLOBAL= /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf
+ sed -e s,^Environment='SECTION_CHECKSUM_GLOBAL=,, -e s,'$,,
+ [ e66f236c1cb34ba08a795537493bc884 = e66f236c1cb34ba08a795537493bc884 ]
  • for dummy driver section, no checksum was saved before (and is not saved when the script re-runs):
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ md5sum
+ awk {print $1}
+ _MD5=ee8819cc0e7231ae99a05e3b7ec54618
...
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ echo Did not find '/etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf' with a SECTION_CHECKSUM
+ return 1
+ [ ee8819cc0e7231ae99a05e3b7ec54618 = Did not find '/etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf' with a SECTION_CHECKSUM ]
+ [ 0 = 0 ]
+ _TMP_SVC=dummy

** TO THINK: Is this related to the section having no config items beside SDP?
** TO THINK: Is it right to compare checksum to error message?

  • eco650 section checksum is detected as not matching the saved value:
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ md5sum
+ awk {print $1}
+ _MD5=6b073941959221404dc6397afd2e8190
...
+ grep Environment='SECTION_CHECKSUM= /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf
+ sed -e s,^Environment='SECTION_CHECKSUM=,, -e s,'$,,
+ [ 6b073941959221404dc6397afd2e8190 = 8a4a7aa5a28a7d38f1961f4d7c3913c9 ]
+ [ 5 = 0 ]
+ _TMP_SVC=dummy
eco650
+ [ 12 = 0 ]
  • Just after that: it does something that does not culminate in service reload nor saved new checksums even if it did conclude the correctly-looking NEW_CHECKSUM list:
...
+ echo dummy
eco650
+ return 1
+ NEW_CHECKSUM=dummy
eco650
+ [ 0 != 0 ]
+ [ 12 != 0 ]
+ upslist_delSvcs
+ common_isFiled dummy
+ [ 12 != 0 ]
+ [ dummy = dummy ]
+ return 0
+ common_isFiled eco650
+ [ 12 != 0 ]
+ [ eco650 = dummy ]
+ systemd_validInstanceName dummy
+ calc_md5 dummy
+ echo dummy
+ md5sum
+ awk {print $1}
+ _MD5=f02e326f800ee26f04df7961adbf7c0a
+ [ -n f02e326f800ee26f04df7961adbf7c0a ]
+ echo f02e326f800ee26f04df7961adbf7c0a
+ echo MD5_f02e326f800ee26f04df7961adbf7c0a
+ [ MD5_f02e326f800ee26f04df7961adbf7c0a = eco650 ]
+ [ eco650 = eco650 ]
+ return 0
+ [ no = yes ]
+ [ no = yes ]
+ [ 12 != 0 ]
+ upslist_addSvcs
+ common_isRegistered dummy
+ [ 12 != 0 ]
+ [ dummy = dummy ]
+ return 0
+ common_isRegistered eco650
+ [ 12 != 0 ]
+ [ eco650 = dummy ]
+ systemd_validInstanceName eco650
+ calc_md5 eco650
+ echo eco650
+ md5sum
+ awk {print $1}
+ _MD5=725517ba9eb4f1b0435dff2aeff5e693
+ [ -n 725517ba9eb4f1b0435dff2aeff5e693 ]
+ echo 725517ba9eb4f1b0435dff2aeff5e693
+ echo MD5_725517ba9eb4f1b0435dff2aeff5e693
+ [ MD5_725517ba9eb4f1b0435dff2aeff5e693 = dummy ]
+ [ eco650 = eco650 ]
+ return 0
+ systemd_refreshSupervizor
+ /bin/systemctl daemon-reload
+ upslist_readSvcs after checking for new config sections to define service instances
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ + sort -n
/bin/systemctl show nut-driver@* -p Id
+ grep -E =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ 12 = 0 ]
+ upslist_readSvcs
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ /bin/systemctl show nut-driver@* -p Id
+ sort -n
+ grep -E =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ 12 = 0 ]
+ [ 12 != 0 ]
+ echo === The currently defined service instances are:
=== The currently defined service instances are:
+ echo dummy
eco650
dummy
eco650
+ [ 12 != 0 ]
+ echo === The currently defined configurations in '/etc/nut/ups.conf' are:
=== The currently defined configurations in '/etc/nut/ups.conf' are:
+ echo dummy
eco650
dummy
eco650
+ [ yes = yes ]
+ systemd_restart_upsd
+ /bin/systemctl is-active nut-server
+ echo Reloading or restarting NUT data server to make sure it knows new configuration...
Reloading or restarting NUT data server to make sure it knows new configuration...
+ timeout 90s /bin/systemctl reload-or-restart nut-server
+ UPSLIST_EQ_RES=0
+ upslist_equals dummy
eco650 dummy
eco650
+ [ 12 != 0 -a 12 = 0 ]
+ [ 12 = 0 -a 12 != 0 ]
+ [ dummy
eco650 = dummy
eco650 ]
+ return 0
+ calc_md5_file /etc/nut/ups.conf
+ [ -s /etc/nut/ups.conf ]
+ md5sum
+ awk {print $1}
+ _MD5=329a0839f13478c06217857d140a31c1
+ [ -n 329a0839f13478c06217857d140a31c1 ]
+ echo 329a0839f13478c06217857d140a31c1
+ UPSCONF_CHECKSUM_END=329a0839f13478c06217857d140a31c1
+ [ 329a0839f13478c06217857d140a31c1 != 329a0839f13478c06217857d140a31c1 ]
+ [ 0 = 0 ]
+ date -u
+ echo Thu Apr 18 20:18:40 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
Thu Apr 18 20:18:40 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
+ [  = no ]
+ return 42
+ exit 42

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

Compared to 2.8.0 snapshot on the same system - NDE script works as expected, so a regression somewhere. Full log:

NUT-2.8.0# sh -x scripts/upsdrvsvcctl/nut-driver-enumerator.sh
+ prefix=/usr/local/ups
+ [ -n  ]
+ NUT_CONFPATH=/etc/nut
+ [ -n  ]
+ SYSTEMD_CONFPATH=/etc/systemd/system
+ [ -n  ]
+ set
+ egrep ^(shell|version|t?csh)
+ egrep t?csh
+ DEPSVC_USB_SYSTEMD=systemd-udev.service systemd-udev-settle.service
+ DEPREQ_USB_SYSTEMD=Wants
+ DEPSVC_NET_FULL_SYSTEMD=network-online.target systemd-resolved.service ifplugd.service
+ DEPREQ_NET_FULL_SYSTEMD=Wants
+ DEPSVC_NET_LOCAL_SYSTEMD=network.target
+ DEPREQ_NET_LOCAL_SYSTEMD=Wants
+ SVCNAME_SYSTEMD=nut-driver
+ DEPSVC_USB_SMF=svc:/system/hotplug:default svc:/system/dbus:default svc:/system/hal:default svc:/milestone/devices:default
+ DEPREQ_USB_SMF=optional_all
+ DEPSVC_NET_FULL_SMF=svc:/network/physical svc:/milestone/name-services
+ DEPREQ_NET_FULL_SMF=optional_all
+ DEPSVC_NET_LOCAL_SMF=svc:/network/loopback:default
+ DEPREQ_NET_LOCAL_SMF=optional_all
+ SVCNAME_SMF=svc:/system/power/nut-driver
+ [ -z  ]
+ NUT_DRIVER_ENUMERATOR_CONF=/etc/nut/nut-driver-enumerator.conf
+ [ -s /etc/nut/nut-driver-enumerator.conf ]
+ [ -z  ]
+ UPSCONF=/etc/nut/ups.conf
+ [ -z  ]
+ AUTO_START=yes
+ printf \t
+ TABCHAR=
+ [ -z  ]
+ [ -x /usr/sbin/svcadm ]
+ [ -z  ]
+ [ -x /bin/systemctl ]
+ SERVICE_FRAMEWORK=systemd
+ [ -z  ]
+ TIMEOUT_CMD=
+ TIMEOUT_ARGS=
+ which timeout
+ TIMEOUT_CMD=timeout
+ TIMEOUT_ARGS=90s
+ UPSCONF_DATA=
+ UPSCONF_DATA_SDP=
+ UPSLIST_FILE=
+ UPSLIST_SVCS=
+ hook_registerInstance=
+ hook_unregisterInstance=
+ hook_refreshSupervizor=
+ hook_listInstances=
+ hook_listInstances_raw=
+ hook_validInstanceName=
+ hook_validFullUnitName=
+ hook_validInstanceSuffixName=
+ hook_getSavedMD5=
+ hook_setSavedMD5=
+ hook_restart_upsd=
+ hook_restart_drv=
+ hook_registerInstance=systemd_registerInstance
+ hook_unregisterInstance=systemd_unregisterInstance
+ hook_refreshSupervizor=systemd_refreshSupervizor
+ hook_listInstances=systemd_listInstances
+ hook_listInstances_raw=systemd_listInstances_raw
+ hook_validInstanceName=systemd_validInstanceName
+ hook_validFullUnitName=systemd_validFullUnitName
+ hook_validInstanceSuffixName=systemd_validInstanceSuffixName
+ hook_getSavedMD5=systemd_getSavedMD5
+ hook_setSavedMD5=systemd_setSavedMD5
+ hook_restart_upsd=systemd_restart_upsd
+ hook_restart_drv=systemd_restart_drv
+ calc_md5_file /etc/nut/ups.conf
+ [ -s /etc/nut/ups.conf ]
+ md5sum
+ awk {print $1}
+ _MD5=329a0839f13478c06217857d140a31c1
+ [ -n 329a0839f13478c06217857d140a31c1 ]
+ echo 329a0839f13478c06217857d140a31c1
+ UPSCONF_CHECKSUM_START=329a0839f13478c06217857d140a31c1
+ [ 0 = 0 ]
+ nut_driver_enumerator_main
+ upslist_readFile
+ UPSLIST_FILE=
+ [  = yes ]
+ upslist_normalizeFile
+ UPSCONF_DATA=
+ UPSCONF_DATA_SDP=
+ [ -n /etc/nut/ups.conf ]
+ [ -f /etc/nut/ups.conf ]
+ [ -r /etc/nut/ups.conf ]
+ [ ! -s /etc/nut/ups.conf ]
+ upslist_normalizeFile_filter
+ egrep -v (^$|^#)
+ sed -e s,^[   \ ]*,, -e s,^\#.*$,, -e s,[     \ ]*$,, -e s,^\([^=\    ]*\)[   \ ]*=[  \ ]*,\1=,g -e s,=\"\([^\        ]*\)\"$,=\1, -e s,^\(\[[^]      \ ]*\]\)[       \ ]*\(#.*\)*$,\1,
+ egrep -v ^$
+ egrep ([\[\=]|^[^     ]*$|^[^         ]*[     ]*\#.*$)
+ UPSCONF_DATA=debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ [ -n debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ egrep ^(\[.*\]|driver=|port=)
+ UPSCONF_DATA_SDP=[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
+ [ -n debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
+ egrep ^\[[^   \ ]*\]$
+ sed s,^\[\(.*\)\]$,\1,
+ sort -n
+ UPSLIST_FILE=dummy
eco650
+ [ -z dummy
eco650 ]
+ upslist_readSvcs before manipulations
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ sort -n
+ /bin/systemctl show nut-driver@* -p Id
+ egrep =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ RESTART_ALL=no
+ upssvcconf_checksum_unchanged
+ upsconf_getSection_MD5
+ upsconf_getSection
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ return 0
+ upsconf_getSection_content
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n  ]
+ RES=0
+ read LINE
+ [  =  ]
+ [ -n  ]
+ SECTION_CONTENT=debug_min=0
+ read LINE
+ [  =  ]
+ break
+ [ -n debug_min=0 ]
+ echo debug_min=0
+ [ 0 = 0 ]
+ return 0
+ calc_md5 debug_min=0
+ echo debug_min=0
+ md5sum
+ awk {print $1}
+ _MD5=e66f236c1cb34ba08a795537493bc884
+ [ -n e66f236c1cb34ba08a795537493bc884 ]
+ echo e66f236c1cb34ba08a795537493bc884
+ systemd_getSavedMD5
+ PROP=SECTION_CHECKSUM
+ [ -n  ]
+ PROP=SECTION_CHECKSUM_GLOBAL
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ grep Environment='SECTION_CHECKSUM_GLOBAL= /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf
+ sed -e s,^Environment='SECTION_CHECKSUM_GLOBAL=,, -e s,'$,,
+ [ e66f236c1cb34ba08a795537493bc884 = e66f236c1cb34ba08a795537493bc884 ]
+ upslist_checksums_unchanged dummy
eco650 dummy
eco650
+ [ -z dummy
eco650 -o -z dummy
eco650 ]
+ _TMP_SVC=
+ systemd_validInstanceName dummy
+ calc_md5 dummy
+ echo dummy
+ md5sum
+ awk {print $1}
+ _MD5=f02e326f800ee26f04df7961adbf7c0a
+ [ -n f02e326f800ee26f04df7961adbf7c0a ]
+ echo f02e326f800ee26f04df7961adbf7c0a
+ echo MD5_f02e326f800ee26f04df7961adbf7c0a
+ DEVINST=MD5_f02e326f800ee26f04df7961adbf7c0a
+ [ dummy = dummy ]
+ upssvcconf_checksum_unchanged dummy dummy
+ upsconf_getSection_MD5 dummy
+ upsconf_getSection dummy
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ return 0
+ upsconf_getSection_content dummy
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n dummy ]
+ read LINE
+ [  = dummy ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[dummy]
+ CURR_SECTION=dummy
+ RES=0
+ continue
+ read LINE
+ [ dummy = dummy ]
+ [ -n [dummy] ]
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
+ read LINE
+ [ dummy = dummy ]
+ [ -n [dummy]
driver=dummy-ups ]
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
port=dummy.dev
+ read LINE
+ [ dummy = dummy ]
+ break
+ [ -n [dummy]
driver=dummy-ups
port=dummy.dev ]
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ [ 0 = 0 ]
+ return 0
+ calc_md5 [dummy]
driver=dummy-ups
port=dummy.dev
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ md5sum
+ awk {print $1}
+ _MD5=ee8819cc0e7231ae99a05e3b7ec54618
+ [ -n ee8819cc0e7231ae99a05e3b7ec54618 ]
+ echo ee8819cc0e7231ae99a05e3b7ec54618
+ systemd_getSavedMD5 dummy
+ PROP=SECTION_CHECKSUM
+ [ -n dummy ]
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ echo Did not find '/etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf' with a SECTION_CHECKSUM
+ return 1
+ [ ee8819cc0e7231ae99a05e3b7ec54618 = Did not find '/etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf' with a SECTION_CHECKSUM ]
+ [ -z  ]
+ _TMP_SVC=dummy
+ [ dummy = eco650 ]
+ [ MD5_f02e326f800ee26f04df7961adbf7c0a = eco650 ]
+ systemd_validInstanceName eco650
+ calc_md5 eco650
+ echo eco650
+ md5sum
+ awk {print $1}
+ _MD5=725517ba9eb4f1b0435dff2aeff5e693
+ [ -n 725517ba9eb4f1b0435dff2aeff5e693 ]
+ echo 725517ba9eb4f1b0435dff2aeff5e693
+ echo MD5_725517ba9eb4f1b0435dff2aeff5e693
+ DEVINST=MD5_725517ba9eb4f1b0435dff2aeff5e693
+ [ eco650 = dummy ]
+ [ MD5_725517ba9eb4f1b0435dff2aeff5e693 = dummy ]
+ [ eco650 = eco650 ]
+ upssvcconf_checksum_unchanged eco650 eco650
+ upsconf_getSection_MD5 eco650
+ upsconf_getSection eco650
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ return 0
+ upsconf_getSection_content eco650
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n eco650 ]
+ read LINE
+ [  = eco650 ]
+ read LINE
+ [  = eco650 ]
+ CURR_SECTION=[]
+ continue
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[eco650]
+ CURR_SECTION=eco650
+ RES=0
+ continue
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650] ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO" ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650" ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ read LINE
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ [ 0 = 0 ]
+ return 0
+ calc_md5 [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ md5sum
+ awk {print $1}
+ _MD5=6b073941959221404dc6397afd2e8190
+ [ -n 6b073941959221404dc6397afd2e8190 ]
+ echo 6b073941959221404dc6397afd2e8190
+ systemd_getSavedMD5 eco650
+ PROP=SECTION_CHECKSUM
+ [ -n eco650 ]
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ grep Environment='SECTION_CHECKSUM= /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf
+ sed -e s,^Environment='SECTION_CHECKSUM=,, -e s,'$,,
+ [ 6b073941959221404dc6397afd2e8190 = 8a4a7aa5a28a7d38f1961f4d7c3913c9 ]
+ [ -z dummy ]
+ _TMP_SVC=dummy
eco650
+ [ -z dummy
eco650 ]
+ echo dummy
eco650
+ return 1
+ NEW_CHECKSUM=dummy
eco650
+ [ -n dummy
eco650 ]
+ echo Dropping old systemd service instance dummy whose section in config file has changed...
Dropping old systemd service instance dummy whose section in config file has changed...
+ systemd_unregisterInstance dummy
+ echo Removing instance: 'nut-driver@dummy' ...
Removing instance: 'nut-driver@dummy' ...
+ timeout 90s /bin/systemctl stop [email protected]
Warning: The unit file, source configuration file or drop-ins of [email protected] changed on disk. Run 'systemctl daemon-reload' to reload units.
+ /bin/systemctl disable [email protected]
Unit /etc/systemd/system/[email protected] is masked, ignoring.
+ rm -rf /etc/systemd/system/[email protected]
+ /bin/systemctl reset-failed [email protected]
+ echo Dropping old systemd service instance eco650 whose section in config file has changed...
Dropping old systemd service instance eco650 whose section in config file has changed...
+ systemd_unregisterInstance eco650
+ echo Removing instance: 'nut-driver@eco650' ...
Removing instance: 'nut-driver@eco650' ...
+ timeout 90s /bin/systemctl stop [email protected]
+ /bin/systemctl disable [email protected]
Removed /etc/systemd/system/nut-driver.target.wants/[email protected].
+ rm -rf /etc/systemd/system/[email protected]
+ /bin/systemctl reset-failed [email protected]
Failed to reset failed state of unit [email protected]: Unit [email protected] not loaded.
+ upslist_readSvcs after updating for new config section checksums
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ /bin/systemctl show nut-driver@* -p Id
+ sort -n
+ egrep =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
+ [ -z dummy ]
+ [ -n dummy ]
+ upslist_delSvcs
+ common_isFiled dummy
+ [ -n dummy
eco650 ]
+ [ dummy = dummy ]
+ return 0
+ [ no = yes ]
+ [ no = yes ]
+ [ -n dummy
eco650 ]
+ upslist_addSvcs
+ common_isRegistered dummy
+ [ -n dummy ]
+ [ dummy = dummy ]
+ return 0
+ common_isRegistered eco650
+ [ -n dummy ]
+ [ eco650 = dummy ]
+ systemd_validInstanceName eco650
+ calc_md5 eco650
+ echo eco650
+ md5sum
+ awk {print $1}
+ _MD5=725517ba9eb4f1b0435dff2aeff5e693
+ [ -n 725517ba9eb4f1b0435dff2aeff5e693 ]
+ echo 725517ba9eb4f1b0435dff2aeff5e693
+ echo MD5_725517ba9eb4f1b0435dff2aeff5e693
+ [ MD5_725517ba9eb4f1b0435dff2aeff5e693 = dummy ]
+ return 1
+ echo Adding new systemd service instance for power device [eco650]...
Adding new systemd service instance for power device [eco650]...
+ systemd_registerInstance eco650
+ DEVICE=eco650
+ SVCINST=eco650
+ /bin/systemctl enable [email protected]
Created symlink /etc/systemd/system/nut-driver.target.wants/[email protected] → /lib/systemd/system/[email protected].
+ echo Enabled instance: 'nut-driver@eco650' for NUT configuration section 'eco650'
Enabled instance: 'nut-driver@eco650' for NUT configuration section 'eco650'
+ DEPSVC=
+ DEPREQ=
+ upsconf_getMedia eco650
+ upsconf_getDriverMedia eco650
+ upsconf_getDriver eco650
+ GETSECTION=upsconf_getSection_SDP upsconf_getValue eco650 driver
+ [ -n driver ]
+ [ -n upsconf_getSection_SDP ]
+ CURR_SECTION=
+ RES=0
+ upsconf_getSection_SDP eco650
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ return 0
+ upsconf_getSection_content eco650
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n eco650 ]
+ read LINE
+ [  = eco650 ]
+ CURR_SECTION=[]
+ continue
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[eco650]
+ CURR_SECTION=eco650
+ RES=0
+ continue
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650] ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ read LINE
+ [ -n [eco650]
driver=usbhid-ups
port=auto ]
+ echo [eco650]
driver=usbhid-ups
port=auto
+ [ 0 = 0 ]
+ return 0
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ shift
+ KEYS=driver
+ [ 1 -gt 0 ]
+ RES_L=0
+ VALUE=
+ echo [eco650]
driver=usbhid-ups
port=auto
+ egrep (^driver=|^driver$)
+ LINE=driver=usbhid-ups
+ echo driver=usbhid-ups
+ sed -e s,^driver=,, -e s,^\"\(.*\)\"$,\1, -e s,^'\(.*\)'$,\1,
+ VALUE=usbhid-ups
+ [ 0 = 0 ]
+ echo usbhid-ups
+ shift
+ [ 0 -gt 0 ]
+ [ 0 = 0 ]
+ return 0
+ return 0
+ CURR_DRV=usbhid-ups
+ printf %s\n%s\n usbhid-ups usb
+ return
+ _DRVMED=usbhid-ups
usb
+ echo usbhid-ups
usb
+ tail -n +2
+ return 0
+ _MED=usb
+ DEPSVC=systemd-udev.service systemd-udev-settle.service
+ DEPREQ=Wants
+ [ -n systemd-udev.service systemd-udev-settle.service ]
+ [ -n Wants ]
+ echo Adding 'Wants'+After dependency for 'eco650' on 'systemd-udev.service systemd-udev-settle.service'...
Adding 'Wants'+After dependency for 'eco650' on 'systemd-udev.service systemd-udev-settle.service'...
+ mkdir -p /etc/systemd/system/[email protected]
+ date -u
+ cat
+ [ 0 = 0 ]
+ echo OK
OK
+ upsconf_getSection_MD5 eco650
+ upsconf_getSection eco650
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ return 0
+ upsconf_getSection_content eco650
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n eco650 ]
+ read LINE
+ [  = eco650 ]
+ read LINE
+ [  = eco650 ]
+ CURR_SECTION=[]
+ continue
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[eco650]
+ CURR_SECTION=eco650
+ RES=0
+ continue
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650] ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO" ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650" ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ read LINE
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2 ]
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ [ 0 = 0 ]
+ return 0
+ calc_md5 [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2
+ md5sum
+ awk {print $1}
+ _MD5=6b073941959221404dc6397afd2e8190
+ [ -n 6b073941959221404dc6397afd2e8190 ]
+ echo 6b073941959221404dc6397afd2e8190
+ systemd_setSavedMD5 eco650 6b073941959221404dc6397afd2e8190
+ PROP=SECTION_CHECKSUM
+ [ -n eco650 ]
+ mkdir -p /etc/systemd/system/[email protected]
+ cat
+ [ 0 = 0 ]
+ echo OK
OK
+ [ yes = yes ]
+ systemd_refreshSupervizor
+ /bin/systemctl daemon-reload
+ timeout 90s /bin/systemctl start --no-block [email protected]
+ echo Started instance: 'nut-driver@eco650' for NUT configuration section 'eco650'
Started instance: 'nut-driver@eco650' for NUT configuration section 'eco650'
+ systemd_refreshSupervizor
+ /bin/systemctl daemon-reload
+ upslist_readSvcs after checking for new config sections to define service instances
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ + sort -n
/bin/systemctl show nut-driver@* -p Id
+ egrep =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ upslist_readSvcs
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ /bin/systemctl show nut-driver@* -p Id
+ sort -n
+ egrep =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ [ -n dummy
eco650 ]
+ echo === The currently defined service instances are:
=== The currently defined service instances are:
+ echo dummy
eco650
dummy
eco650
+ [ -n dummy
eco650 ]
+ echo === The currently defined configurations in '/etc/nut/ups.conf' are:
=== The currently defined configurations in '/etc/nut/ups.conf' are:
+ echo dummy
eco650
dummy
eco650
+ [ yes = yes ]
+ systemd_restart_upsd
+ /bin/systemctl is-active nut-server
+ echo Restarting NUT data server to make sure it knows new configuration...
Restarting NUT data server to make sure it knows new configuration...
+ timeout 90s /bin/systemctl reload-or-restart nut-server
+ UPSLIST_EQ_RES=0
+ upslist_equals dummy
eco650 dummy
eco650
+ [ -n dummy
eco650 -a -z dummy
eco650 ]
+ [ -z dummy
eco650 -a -n dummy
eco650 ]
+ [ dummy
eco650 = dummy
eco650 ]
+ return 0
+ calc_md5_file /etc/nut/ups.conf
+ [ -s /etc/nut/ups.conf ]
+ md5sum
+ awk {print $1}
+ _MD5=329a0839f13478c06217857d140a31c1
+ [ -n 329a0839f13478c06217857d140a31c1 ]
+ echo 329a0839f13478c06217857d140a31c1
+ UPSCONF_CHECKSUM_END=329a0839f13478c06217857d140a31c1
+ [ 329a0839f13478c06217857d140a31c1 != 329a0839f13478c06217857d140a31c1 ]
+ [ 0 = 0 ]
+ date -u
+ echo Thu Apr 18 21:06:41 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
Thu Apr 18 21:06:41 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
+ [  = no ]
+ return 42
+ exit 42

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

It did not seem to restart the driver, though (with changed debug_min setting):

Apr 18 23:09:38 pve systemd[1]: Starting Network UPS Tools - enumeration of configure-file devices into systemd unit instances...
Apr 18 23:09:38 pve nut-driver-enumerator[1895069]: grep: /etc/systemd/system/nut-driver@*.service.d/nut-driver-enumerator-generated-devicename.conf: No such file or directory
Apr 18 23:09:38 pve nut-driver-enumerator[1895053]: Service instance '[email protected]' did not have a device recorded into properties, setting to 'dummy'
Apr 18 23:09:38 pve nut-driver-enumerator[1895053]: OK
Apr 18 23:09:38 pve nut-driver-enumerator[1895053]: Service instance '[email protected]' did not have a device recorded into properties, setting to 'eco650'
Apr 18 23:09:38 pve nut-driver-enumerator[1895053]: OK
Apr 18 23:09:39 pve nut-driver@eco650[1865973]:  178.113368        [D1] upsdrv_updateinfo...
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: === The currently defined service instances are:
Apr 18 23:09:39 pve systemd[1]: Reloading Network UPS Tools - power devices information server.
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: dummy
Apr 18 23:09:39 pve nut-server[1895233]: Network UPS Tools upsd 2.8.2-60-gdeba0a96a
Apr 18 23:09:39 pve upsd[1180563]: mainloop: Interrupted system call
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: eco650
Apr 18 23:09:39 pve nut-server[1180563]: mainloop: Interrupted system call
Apr 18 23:09:39 pve nut-server[1180563]: SIGHUP: reloading configuration
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: === The currently defined configurations in '/etc/nut/ups.conf' are:
Apr 18 23:09:39 pve nut-server[1180563]: Applying debug level 0 from original command line arguments
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: dummy
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: eco650
Apr 18 23:09:39 pve systemd[1]: Reloaded Network UPS Tools - power devices information server.
Apr 18 23:09:39 pve upsd[1180563]: SIGHUP: reloading configuration
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: Reloading or restarting NUT data server to make sure it knows new configuration...
Apr 18 23:09:39 pve upsd[1180563]: Applying debug level 0 from original command line arguments
Apr 18 23:09:39 pve nut-driver-enumerator[1895053]: Thu Apr 18 21:09:39 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
Apr 18 23:09:39 pve systemd[1]: nut-driver-enumerator.service: Succeeded.
Apr 18 23:09:39 pve systemd[1]: Finished Network UPS Tools - enumeration of configure-file devices into systemd unit instances.
Apr 18 23:09:40 pve nut-driver@eco650[1865973]:  178.863499        [D2] nut_libusb_get_interrupt: Connection timed out
Apr 18 23:09:40 pve nut-driver@eco650[1865973]:  178.863515        [D1] Got 0 HID objects...
Apr 18 23:09:40 pve nut-driver@eco650[1865973]:  178.863521        [D1] Quick update...

It did at least touch the NDE artifact files though:

:; ls -la  nut-driver@*.service.d/*
-rw-r--r-- 1 root root  81 Apr 19  2023 [email protected]/nut-driver-enumerator-generated-checksum.conf
-rw-r--r-- 1 root root  39 Apr 18 23:09 [email protected]/nut-driver-enumerator-generated-devicename.conf
-rw-r--r-- 1 root root  74 Apr 18 23:06 [email protected]/nut-driver-enumerator-generated-checksum.conf
-rw-r--r-- 1 root root  40 Apr 18 23:09 [email protected]/nut-driver-enumerator-generated-devicename.conf
-rw-r--r-- 1 root root 364 Apr 18 23:06 [email protected]/nut-driver-enumerator-generated.conf

:; grep . nut-driver@*.d/*
[email protected]/nut-driver-enumerator-generated-checksum.conf:[Service]
[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM_GLOBAL=e66f236c1cb34ba08a795537493bc884'

[email protected]/nut-driver-enumerator-generated-devicename.conf:[Service]
[email protected]/nut-driver-enumerator-generated-devicename.conf:Environment='DEVICE="dummy"'

[email protected]/nut-driver-enumerator-generated-checksum.conf:[Service]
[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM=6b073941959221404dc6397afd2e8190'

[email protected]/nut-driver-enumerator-generated-devicename.conf:[Service]
[email protected]/nut-driver-enumerator-generated-devicename.conf:Environment='DEVICE="eco650"'

[email protected]/nut-driver-enumerator-generated.conf:# Customization generated Thu Apr 18 21:06:40 UTC 2024 by nut-driver-enumerator for NUT device 'eco650'
[email protected]/nut-driver-enumerator-generated.conf:# DO NOT EDIT: This file would be removed or overwritten by that service
[email protected]/nut-driver-enumerator-generated.conf:[Unit]
[email protected]/nut-driver-enumerator-generated.conf:Description=Network UPS Tools - device driver for NUT device 'eco650'
[email protected]/nut-driver-enumerator-generated.conf:Wants=systemd-udev.service systemd-udev-settle.service
[email protected]/nut-driver-enumerator-generated.conf:After=systemd-udev.service systemd-udev-settle.service

The only substantial change however was the modified checksum for eco650:

[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM=6b073941959221404dc6397afd2e8190'

...which matches the contents with debug_min=2 and did not seem to change with debug_min=0 activated later (that would be 8a4a7aa5a28a7d38f1961f4d7c3913c9 - which happens to be the previous checksum stored since last year):

:; echo '[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=2' | md5sum

6b073941959221404dc6397afd2e8190  -
:; echo '[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0' | md5sum

8a4a7aa5a28a7d38f1961f4d7c3913c9  -

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

Likewise, NDE script from NUT v2.8.1 snapshot logged this:

# sh -x scripts/upsdrvsvcctl/nut-driver-enumerator.sh
+ prefix=/usr/local/ups
+ [ -n  ]
+ NUT_CONFPATH=/etc/nut
+ [ -n  ]
+ SYSTEMD_CONFPATH=/etc/systemd/system
+ [ -n  ]
+ set
+ grep -E ^(shell|version|t?csh)
+ grep -E t?csh
+ DEPSVC_USB_SYSTEMD=systemd-udev.service systemd-udev-settle.service
+ DEPREQ_USB_SYSTEMD=Wants
+ DEPSVC_NET_FULL_SYSTEMD=network-online.target systemd-resolved.service ifplugd.service
+ DEPREQ_NET_FULL_SYSTEMD=Wants
+ DEPSVC_NET_LOCAL_SYSTEMD=network.target
+ DEPREQ_NET_LOCAL_SYSTEMD=Wants
+ SVCNAME_SYSTEMD=nut-driver
+ DEPSVC_USB_SMF=svc:/system/hotplug:default svc:/system/dbus:default svc:/system/hal:default svc:/milestone/devices:default
+ DEPREQ_USB_SMF=optional_all
+ DEPSVC_NET_FULL_SMF=svc:/network/physical svc:/milestone/name-services
+ DEPREQ_NET_FULL_SMF=optional_all
+ DEPSVC_NET_LOCAL_SMF=svc:/network/loopback:default
+ DEPREQ_NET_LOCAL_SMF=optional_all
+ SVCNAME_SMF=svc:/system/power/nut-driver
+ [ -z  ]
+ NUT_DRIVER_ENUMERATOR_CONF=/etc/nut/nut-driver-enumerator.conf
+ [ -s /etc/nut/nut-driver-enumerator.conf ]
+ [ -z  ]
+ UPSCONF=/etc/nut/ups.conf
+ [ -z  ]
+ AUTO_START=yes
+ printf \t
+ TABCHAR=
+ [ -z  ]
+ [ -x /usr/sbin/svcadm ]
+ [ -z  ]
+ [ -x /bin/systemctl ]
+ SERVICE_FRAMEWORK=systemd
+ [ -z  ]
+ TIMEOUT_CMD=
+ TIMEOUT_ARGS=
+ which timeout
+ TIMEOUT_CMD=timeout
+ TIMEOUT_ARGS=90s
+ UPSCONF_DATA=
+ UPSCONF_DATA_SDP=
+ UPSLIST_FILE=
+ UPSLIST_SVCS=
+ hook_registerInstance=
+ hook_unregisterInstance=
+ hook_refreshSupervizor=
+ hook_listInstances=
+ hook_listInstances_raw=
+ hook_validInstanceName=
+ hook_validFullUnitName=
+ hook_validInstanceSuffixName=
+ hook_getSavedMD5=
+ hook_setSavedMD5=
+ hook_restart_upsd=
+ hook_restart_drv=
+ hook_registerInstance=systemd_registerInstance
+ hook_unregisterInstance=systemd_unregisterInstance
+ hook_refreshSupervizor=systemd_refreshSupervizor
+ hook_listInstances=systemd_listInstances
+ hook_listInstances_raw=systemd_listInstances_raw
+ hook_validInstanceName=systemd_validInstanceName
+ hook_validFullUnitName=systemd_validFullUnitName
+ hook_validInstanceSuffixName=systemd_validInstanceSuffixName
+ hook_getSavedMD5=systemd_getSavedMD5
+ hook_setSavedMD5=systemd_setSavedMD5
+ hook_restart_upsd=systemd_restart_upsd
+ hook_restart_drv=systemd_restart_drv
+ calc_md5_file /etc/nut/ups.conf
+ [ -s /etc/nut/ups.conf ]
+ md5sum
+ awk {print $1}
+ _MD5=fedc1d8abc159c5580adb97b9c3e429b
+ [ -n fedc1d8abc159c5580adb97b9c3e429b ]
+ echo fedc1d8abc159c5580adb97b9c3e429b
+ UPSCONF_CHECKSUM_START=fedc1d8abc159c5580adb97b9c3e429b
+ [ 0 = 0 ]
+ nut_driver_enumerator_main
+ upslist_readFile
+ UPSLIST_FILE=
+ [  = yes ]
+ upslist_normalizeFile
+ UPSCONF_DATA=
+ UPSCONF_DATA_SDP=
+ [ -n /etc/nut/ups.conf ]
+ [ -f /etc/nut/ups.conf ]
+ [ -r /etc/nut/ups.conf ]
+ [ ! -s /etc/nut/ups.conf ]
+ upslist_normalizeFile_filter
+ grep -E -v (^$|^#)
+ sed -e s,^[   \ ]*,, -e s,^\#.*$,, -e s,[     \ ]*$,, -e s,^\([^=\    ]*\)[   \ ]*=[  \ ]*,\1=,g -e s,=\"\([^\        ]*\)\"$,=\1, -e s,^\(\[[^]      \ ]*\]\)[       \ ]*\(#.*\)*$,\1,
+ grep -E -v ^$
+ grep -E ([\[\=]|^[^   ]*$|^[^         ]*[     ]*#.*$)
+ UPSCONF_DATA=debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0
+ [ -n debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ grep -E ^(\[.*\]|driver=|port=)
+ UPSCONF_DATA_SDP=[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
+ [ -n debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
+ grep -E ^\[[^ \ ]*\]$
+ sed s,^\[\(.*\)\]$,\1,
+ sort -n
+ UPSLIST_FILE=dummy
eco650
+ [ -z dummy
eco650 ]
+ upslist_readSvcs before manipulations
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ /bin/systemctl show nut-driver@* -p Id
+ sort -n
+ grep -E =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ RESTART_ALL=no
+ upssvcconf_checksum_unchanged
+ upsconf_getSection_MD5
+ upsconf_getSection
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ return 0
+ upsconf_getSection_content
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n  ]
+ RES=0
+ read LINE
+ [  =  ]
+ [ -n  ]
+ SECTION_CONTENT=debug_min=0
+ read LINE
+ [  =  ]
+ break
+ [ -n debug_min=0 ]
+ echo debug_min=0
+ [ 0 = 0 ]
+ return 0
+ calc_md5 debug_min=0
+ echo debug_min=0
+ md5sum
+ awk {print $1}
+ _MD5=e66f236c1cb34ba08a795537493bc884
+ [ -n e66f236c1cb34ba08a795537493bc884 ]
+ echo e66f236c1cb34ba08a795537493bc884
+ systemd_getSavedMD5
+ PROP=SECTION_CHECKSUM
+ [ -n  ]
+ PROP=SECTION_CHECKSUM_GLOBAL
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ grep Environment='SECTION_CHECKSUM_GLOBAL= /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf
+ sed -e s,^Environment='SECTION_CHECKSUM_GLOBAL=,, -e s,'$,,
+ [ e66f236c1cb34ba08a795537493bc884 = e66f236c1cb34ba08a795537493bc884 ]
+ upslist_checksums_unchanged dummy
eco650 dummy
eco650
+ [ -z dummy
eco650 -o -z dummy
eco650 ]
+ _TMP_SVC=
+ systemd_validInstanceName dummy
+ calc_md5 dummy
+ echo dummy
+ md5sum
+ awk {print $1}
+ _MD5=f02e326f800ee26f04df7961adbf7c0a
+ [ -n f02e326f800ee26f04df7961adbf7c0a ]
+ echo f02e326f800ee26f04df7961adbf7c0a
+ echo MD5_f02e326f800ee26f04df7961adbf7c0a
+ DEVINST=MD5_f02e326f800ee26f04df7961adbf7c0a
+ [ dummy = dummy ]
+ upssvcconf_checksum_unchanged dummy dummy
+ upsconf_getSection_MD5 dummy
+ upsconf_getSection dummy
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ return 0
+ upsconf_getSection_content dummy
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n dummy ]
+ read LINE
+ [  = dummy ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[dummy]
+ CURR_SECTION=dummy
+ RES=0
+ continue
+ read LINE
+ [ dummy = dummy ]
+ [ -n [dummy] ]
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
+ read LINE
+ [ dummy = dummy ]
+ [ -n [dummy]
driver=dummy-ups ]
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
port=dummy.dev
+ read LINE
+ [ dummy = dummy ]
+ break
+ [ -n [dummy]
driver=dummy-ups
port=dummy.dev ]
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ [ 0 = 0 ]
+ return 0
+ calc_md5 [dummy]
driver=dummy-ups
port=dummy.dev
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ md5sum
+ awk {print $1}
+ _MD5=ee8819cc0e7231ae99a05e3b7ec54618
+ [ -n ee8819cc0e7231ae99a05e3b7ec54618 ]
+ echo ee8819cc0e7231ae99a05e3b7ec54618
+ systemd_getSavedMD5 dummy
+ PROP=SECTION_CHECKSUM
+ [ -n dummy ]
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ echo Did not find '/etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf' with a SECTION_CHECKSUM
+ return 1
+ [ ee8819cc0e7231ae99a05e3b7ec54618 = Did not find '/etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf' with a SECTION_CHECKSUM ]
+ [ -z  ]
+ _TMP_SVC=dummy
+ [ dummy = eco650 ]
+ [ MD5_f02e326f800ee26f04df7961adbf7c0a = eco650 ]
+ systemd_validInstanceName eco650
+ calc_md5 eco650
+ echo eco650
+ md5sum
+ awk {print $1}
+ _MD5=725517ba9eb4f1b0435dff2aeff5e693
+ [ -n 725517ba9eb4f1b0435dff2aeff5e693 ]
+ echo 725517ba9eb4f1b0435dff2aeff5e693
+ echo MD5_725517ba9eb4f1b0435dff2aeff5e693
+ DEVINST=MD5_725517ba9eb4f1b0435dff2aeff5e693
+ [ eco650 = dummy ]
+ [ MD5_725517ba9eb4f1b0435dff2aeff5e693 = dummy ]
+ [ eco650 = eco650 ]
+ upssvcconf_checksum_unchanged eco650 eco650
+ upsconf_getSection_MD5 eco650
+ upsconf_getSection eco650
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ return 0
+ upsconf_getSection_content eco650
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n eco650 ]
+ read LINE
+ [  = eco650 ]
+ read LINE
+ [  = eco650 ]
+ CURR_SECTION=[]
+ continue
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[eco650]
+ CURR_SECTION=eco650
+ RES=0
+ continue
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650] ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO" ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650" ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003 ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0
+ read LINE
+ [ -n [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0
+ [ 0 = 0 ]
+ return 0
+ calc_md5 [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0
+ echo [eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0
+ md5sum
+ awk {print $1}
+ _MD5=8a4a7aa5a28a7d38f1961f4d7c3913c9
+ [ -n 8a4a7aa5a28a7d38f1961f4d7c3913c9 ]
+ echo 8a4a7aa5a28a7d38f1961f4d7c3913c9
+ systemd_getSavedMD5 eco650
+ PROP=SECTION_CHECKSUM
+ [ -n eco650 ]
+ [ -s /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf ]
+ grep Environment='SECTION_CHECKSUM= /etc/systemd/system/[email protected]/nut-driver-enumerator-generated-checksum.conf
+ sed -e s,^Environment='SECTION_CHECKSUM=,, -e s,'$,,
+ [ 8a4a7aa5a28a7d38f1961f4d7c3913c9 = 6b073941959221404dc6397afd2e8190 ]
+ [ -z dummy ]
+ _TMP_SVC=dummy
eco650
+ [ -z dummy
eco650 ]
+ echo dummy
eco650
+ return 1
+ NEW_CHECKSUM=dummy
eco650
+ [ -n dummy
eco650 ]
+ upsconf_getDriver dummy
+ GETSECTION=upsconf_getSection_SDP upsconf_getValue dummy driver
+ [ -n driver ]
+ [ -n upsconf_getSection_SDP ]
+ CURR_SECTION=
+ RES=0
+ upsconf_getSection_SDP dummy
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ return 0
+ upsconf_getSection_content dummy
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n dummy ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[dummy]
+ CURR_SECTION=dummy
+ RES=0
+ continue
+ read LINE
+ [ dummy = dummy ]
+ [ -n [dummy] ]
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
+ read LINE
+ [ dummy = dummy ]
+ [ -n [dummy]
driver=dummy-ups ]
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
port=dummy.dev
+ read LINE
+ [ dummy = dummy ]
+ break
+ [ -n [dummy]
driver=dummy-ups
port=dummy.dev ]
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ [ 0 = 0 ]
+ return 0
+ SECTION_CONTENT=[dummy]
driver=dummy-ups
port=dummy.dev
+ shift
+ KEYS=driver
+ [ 1 -gt 0 ]
+ RES_L=0
+ VALUE=
+ echo [dummy]
driver=dummy-ups
port=dummy.dev
+ grep -E (^driver=|^driver$)
+ LINE=driver=dummy-ups
+ echo driver=dummy-ups
+ sed -e s,^driver=,, -e s,^\"\(.*\)\"$,\1, -e s,^'\(.*\)'$,\1,
+ VALUE=dummy-ups
+ [ 0 = 0 ]
+ echo dummy-ups
+ shift
+ [ 0 -gt 0 ]
+ [ 0 = 0 ]
+ return 0
+ return 0
+ CURR_DRV=dummy-ups
+ DO_UNREGISTER=yes
+ [ -n dummy-ups ]
+ /usr/local/ups/bin/dummy-ups -a dummy -c reload-or-error
+ [ yes = yes ]
+ echo Dropping old systemd service instance dummy whose section in config file has changed...
Dropping old systemd service instance dummy whose section in config file has changed...
+ systemd_unregisterInstance dummy
+ echo Removing instance: 'nut-driver@dummy' ...
Removing instance: 'nut-driver@dummy' ...
+ timeout 90s /bin/systemctl stop [email protected]
Warning: The unit file, source configuration file or drop-ins of [email protected] changed on disk. Run 'systemctl daemon-reload' to reload units.
+ /bin/systemctl disable [email protected]
Unit /etc/systemd/system/[email protected] is masked, ignoring.
+ rm -rf /etc/systemd/system/[email protected]
+ /bin/systemctl reset-failed [email protected]
+ upsconf_getDriver eco650
+ GETSECTION=upsconf_getSection_SDP upsconf_getValue eco650 driver
+ [ -n driver ]
+ [ -n upsconf_getSection_SDP ]
+ CURR_SECTION=
+ RES=0
+ upsconf_getSection_SDP eco650
+ upslist_normalizeFile_once
+ [ -z debug_min=0
[dummy]
driver=dummy-ups
port=dummy.dev
[eco650]
driver=usbhid-ups
port=auto
vendorid=0463
productid=FFFF
product="Ellipse ECO"
desc="Eaton Ellipse ECO 650"
serial=000000000
vendor=EATON
bus=003
debug_min=0 ]
+ return 0
+ upsconf_getSection_content eco650
+ CURR_SECTION=
+ SECTION_CONTENT=
+ RES=1
+ [ -n eco650 ]
+ read LINE
+ [  = eco650 ]
+ CURR_SECTION=[]
+ continue
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ [] = eco650 ]
+ read LINE
+ [ 1 = 0 ]
+ SECTION_CONTENT=[eco650]
+ CURR_SECTION=eco650
+ RES=0
+ continue
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650] ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
+ read LINE
+ [ eco650 = eco650 ]
+ [ -n [eco650]
driver=usbhid-ups ]
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ read LINE
+ [ -n [eco650]
driver=usbhid-ups
port=auto ]
+ echo [eco650]
driver=usbhid-ups
port=auto
+ [ 0 = 0 ]
+ return 0
+ SECTION_CONTENT=[eco650]
driver=usbhid-ups
port=auto
+ shift
+ KEYS=driver
+ [ 1 -gt 0 ]
+ RES_L=0
+ VALUE=
+ echo [eco650]
driver=usbhid-ups
port=auto
+ grep -E (^driver=|^driver$)
+ LINE=driver=usbhid-ups
+ echo driver=usbhid-ups
+ sed -e s,^driver=,, -e s,^\"\(.*\)\"$,\1, -e s,^'\(.*\)'$,\1,
+ VALUE=usbhid-ups
+ [ 0 = 0 ]
+ echo usbhid-ups
+ shift
+ [ 0 -gt 0 ]
+ [ 0 = 0 ]
+ return 0
+ return 0
+ CURR_DRV=usbhid-ups
+ DO_UNREGISTER=yes
+ [ -n usbhid-ups ]
+ /usr/local/ups/bin/usbhid-ups -a eco650 -c reload-or-error
+ DO_UNREGISTER=no
+ [ no = yes ]
+ echo Keeping systemd service instance eco650 whose section in config file has changed: live reload sufficed
Keeping systemd service instance eco650 whose section in config file has changed: live reload sufficed
+ upslist_readSvcs after updating for new config section checksums
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ + sort -n/bin/systemctl
 show nut-driver@* -p Id
+ grep -E =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ [ -n dummy
eco650 ]
+ upslist_delSvcs
+ common_isFiled dummy
+ [ -n dummy
eco650 ]
+ [ dummy = dummy ]
+ return 0
+ common_isFiled eco650
+ [ -n dummy
eco650 ]
+ [ eco650 = dummy ]
+ systemd_validInstanceName dummy
+ calc_md5 dummy
+ echo dummy
+ md5sum
+ awk {print $1}
+ _MD5=f02e326f800ee26f04df7961adbf7c0a
+ [ -n f02e326f800ee26f04df7961adbf7c0a ]
+ echo f02e326f800ee26f04df7961adbf7c0a
+ echo MD5_f02e326f800ee26f04df7961adbf7c0a
+ [ MD5_f02e326f800ee26f04df7961adbf7c0a = eco650 ]
+ [ eco650 = eco650 ]
+ return 0
+ [ no = yes ]
+ [ no = yes ]
+ [ -n dummy
eco650 ]
+ upslist_addSvcs
+ common_isRegistered dummy
+ [ -n dummy
eco650 ]
+ [ dummy = dummy ]
+ return 0
+ common_isRegistered eco650
+ [ -n dummy
eco650 ]
+ [ eco650 = dummy ]
+ systemd_validInstanceName eco650
+ calc_md5 eco650
+ echo eco650
+ md5sum
+ awk {print $1}
+ _MD5=725517ba9eb4f1b0435dff2aeff5e693
+ [ -n 725517ba9eb4f1b0435dff2aeff5e693 ]
+ echo 725517ba9eb4f1b0435dff2aeff5e693
+ echo MD5_725517ba9eb4f1b0435dff2aeff5e693
+ [ MD5_725517ba9eb4f1b0435dff2aeff5e693 = dummy ]
+ [ eco650 = eco650 ]
+ return 0
+ systemd_refreshSupervizor
+ /bin/systemctl daemon-reload
+ upslist_readSvcs after checking for new config sections to define service instances
+ systemd_listInstances
+ systemd_listInstances_raw
+ + sed -e/bin/systemctl s/^.*@// show -e nut-driver@* s/\.service$// -p
 Id
+ sort -n
+ grep -E =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ upslist_readSvcs
+ systemd_listInstances
+ systemd_listInstances_raw
+ sed -e s/^.*@// -e s/\.service$//
+ /bin/systemctl show+  nut-driver@* -p Id
sort+  -n
grep -E =nut-driver
+ sed s,^Id=,,
+ UPSLIST_SVCS=dummy
eco650
+ [ -z dummy
eco650 ]
+ [ -n dummy
eco650 ]
+ echo === The currently defined service instances are:
=== The currently defined service instances are:
+ echo dummy
eco650
dummy
eco650
+ [ -n dummy
eco650 ]
+ echo === The currently defined configurations in '/etc/nut/ups.conf' are:
=== The currently defined configurations in '/etc/nut/ups.conf' are:
+ echo dummy
eco650
dummy
eco650
+ [ yes = yes ]
+ systemd_restart_upsd
+ /bin/systemctl is-active nut-server
+ echo Reloading or restarting NUT data server to make sure it knows new configuration...
Reloading or restarting NUT data server to make sure it knows new configuration...
+ timeout 90s /bin/systemctl reload-or-restart nut-server
+ UPSLIST_EQ_RES=0
+ upslist_equals dummy
eco650 dummy
eco650
+ [ -n dummy
eco650 -a -z dummy
eco650 ]
+ [ -z dummy
eco650 -a -n dummy
eco650 ]
+ [ dummy
eco650 = dummy
eco650 ]
+ return 0
+ calc_md5_file /etc/nut/ups.conf
+ [ -s /etc/nut/ups.conf ]
+ md5sum
+ awk {print $1}
+ _MD5=fedc1d8abc159c5580adb97b9c3e429b
+ [ -n fedc1d8abc159c5580adb97b9c3e429b ]
+ echo fedc1d8abc159c5580adb97b9c3e429b
+ UPSCONF_CHECKSUM_END=fedc1d8abc159c5580adb97b9c3e429b
+ [ fedc1d8abc159c5580adb97b9c3e429b != fedc1d8abc159c5580adb97b9c3e429b ]
+ [ 0 = 0 ]
+ date -u
+ echo Thu Apr 18 21:26:05 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
Thu Apr 18 21:26:05 UTC 2024 : OK: No more changes to reconcile between systemd service instances and device configurations in '/etc/nut/ups.conf'
+ [  = no ]
+ return 42
+ exit 42

Services changed, driver restarted with new settings:

...
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415286        [D2] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x01, Offset: 1, Size: 1, Value: 0
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415318        sock_connect: enabling asynchronous mode (auto)
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415332        [D1] sock_arg: socket 11 requested NOBROADCAST mode
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415338        [D2] send_to_one: sending PONG
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415425        [D2] entering main_instcmd(driver.reload-or-error, (null)) for [eco650] on socket 11
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415453        [D1] set_reload_flag: raising reload flag due to signal -1 (Unknown signal -1) => reload_flag=1
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415457        Handling requested live reload of NUT driver configuration for [eco650]
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415541        [D1] testval_reloadable: setting 'driver' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415551        [D1] testval_reloadable: setting 'port' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415558        [D1] testvar_reloadable: setting 'vendorid' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415565        [D1] testvar_reloadable: setting 'productid' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415571        [D1] testvar_reloadable: setting 'product' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415580        [D1] testvar_reloadable: setting 'serial' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415586        [D1] testvar_reloadable: setting 'vendor' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415591        [D1] testvar_reloadable: setting 'bus' exists and is unmodified
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415604        [D1] handle_reload_flag: read_upsconf() for [eco650] completed, restart-required verdict was: 0
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415641        Applying debug_min=0 from ups.conf driver section (overriding global 0)
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: 1163.415648        Applying debug level 0 from original command line arguments
Apr 18 23:26:04 pve nut-driver@eco650[1865973]: Completed requested live reload of NUT driver configuration for [eco650]: 0
Apr 18 23:26:05 pve systemd[1]: Reloading Network UPS Tools - power devices information server.
Apr 18 23:26:05 pve nut-server[1923942]: Network UPS Tools upsd 2.8.2-60-gdeba0a96a
Apr 18 23:26:05 pve systemd[1]: Reloaded Network UPS Tools - power devices information server.
Apr 18 23:26:05 pve upsd[1180563]: mainloop: Interrupted system call
Apr 18 23:26:05 pve nut-server[1180563]: mainloop: Interrupted system call
Apr 18 23:26:05 pve nut-server[1180563]: SIGHUP: reloading configuration
Apr 18 23:26:05 pve nut-server[1180563]: Applying debug level 0 from original command line arguments
Apr 18 23:26:05 pve upsd[1180563]: SIGHUP: reloading configuration
Apr 18 23:26:05 pve upsd[1180563]: Applying debug level 0 from original command line arguments

Set of NDE artifact files differs (file for dummy disappeared):

:; ls -la  nut-driver@*.service.d/*
-rw-r--r-- 1 root root  81 Apr 19  2023 [email protected]/nut-driver-enumerator-generated-checksum.conf
-rw-r--r-- 1 root root  74 Apr 18 23:06 [email protected]/nut-driver-enumerator-generated-checksum.conf
-rw-r--r-- 1 root root  40 Apr 18 23:09 [email protected]/nut-driver-enumerator-generated-devicename.conf
-rw-r--r-- 1 root root 364 Apr 18 23:06 [email protected]/nut-driver-enumerator-generated.conf

:;  grep . nut-driver@*.d/*
[email protected]/nut-driver-enumerator-generated-checksum.conf:[Service]
[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM_GLOBAL=e66f236c1cb34ba08a795537493bc884'

[email protected]/nut-driver-enumerator-generated-checksum.conf:[Service]
[email protected]/nut-driver-enumerator-generated-checksum.conf:Environment='SECTION_CHECKSUM=6b073941959221404dc6397afd2e8190'

[email protected]/nut-driver-enumerator-generated-devicename.conf:[Service]
[email protected]/nut-driver-enumerator-generated-devicename.conf:Environment='DEVICE="eco650"'

[email protected]/nut-driver-enumerator-generated.conf:# Customization generated Thu Apr 18 21:06:40 UTC 2024 by nut-driver-enumerator for NUT device 'eco650'
[email protected]/nut-driver-enumerator-generated.conf:# DO NOT EDIT: This file would be removed or overwritten by that service
[email protected]/nut-driver-enumerator-generated.conf:[Unit]
[email protected]/nut-driver-enumerator-generated.conf:Description=Network UPS Tools - device driver for NUT device 'eco650'
[email protected]/nut-driver-enumerator-generated.conf:Wants=systemd-udev.service systemd-udev-settle.service
[email protected]/nut-driver-enumerator-generated.conf:After=systemd-udev.service systemd-udev-settle.service

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

Both logs for 2.8.0 and 2.8.1 show lines for Dropping old systemd service instance X whose section in config file has changed and then Adding new systemd service instance for power device [X]... but two runs of the current master branch code indeed do not.

Looking for regression...

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

Noting on 218 length-check question above: PR #682 did add an optimization to replace shell string variable emptiness checks with comparison of length count to 0. And checking UPSCONF_DATA twice is part of call stack from upslist_readFile(). So this bit of mystery is resolved :)

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

Sub-shelling misfired: NEW_CHECKSUM is set inside round parentheses and value gets lost (stays empty as it was) in outer shell.

from nut.

jimklimov avatar jimklimov commented on June 2, 2024

Another note (regarding lack of checksum file for dummy that only has SDP fields not commented away): we do try to save it... somehow (TO REVISE):

systemd_registerInstance() { ...
    systemd_setSavedMD5 "$SVCINST" "`upsconf_getSection_MD5 "$DEVICE"`"
}

What does upsconf_getSection_MD5() return in this case (SDP-only)?

UPDATE: Seems to return and checksum the whole content, does not exclude SDP lines and remain with nothing. So perhaps when re-creation of units gets fixed, these files would appear again.

from nut.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.