Diff of the two buildlogs:

--
--- b1/build.log	2025-01-04 14:47:50.594071759 +0000
+++ b2/build.log	2025-01-04 14:50:53.217719222 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Sat Jan  4 02:35:47 -12 2025
-I: pbuilder-time-stamp: 1736001347
+I: Current time: Sat Feb  7 11:10:49 +14 2026
+I: pbuilder-time-stamp: 1770412249
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
 I: copying local configuration
@@ -27,54 +27,86 @@
 dpkg-source: info: applying fix-syntax-warning.patch
 I: using fakeroot in build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/56152/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/D01_modify_environment starting
+debug: Running on ionos16-i386.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Feb  6 21:11 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='i386'
-  DEBIAN_FRONTEND='noninteractive'
-  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=11 '
-  DISTRIBUTION='unstable'
-  HOME='/root'
-  HOST_ARCH='i386'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="i686-pc-linux-gnu")
+  BASH_VERSION='5.2.37(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=i386
+  DEBIAN_FRONTEND=noninteractive
+  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=21 '
+  DIRSTACK=()
+  DISTRIBUTION=unstable
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=i686
+  HOST_ARCH=i386
   IFS=' 	
   '
-  INVOCATION_ID='341758e2207549f5a62bf330c3134dbe'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  LD_LIBRARY_PATH='/usr/lib/libeatmydata'
-  LD_PRELOAD='libeatmydata.so'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='56152'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=02cf1c38b1cf4f7a98936b37c095c573
+  LANG=C
+  LANGUAGE=de_CH:de
+  LC_ALL=C
+  LD_LIBRARY_PATH=/usr/lib/libeatmydata
+  LD_PRELOAD=libeatmydata.so
+  MACHTYPE=i686-pc-linux-gnu
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnu
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=53651
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.aVMovsf0/pbuilderrc_EUlc --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.aVMovsf0/b1 --logfile b1/build.log ironic-python-agent_9.14.0-5.dsc'
-  SUDO_GID='112'
-  SUDO_UID='107'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://46.16.76.132:3128'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.aVMovsf0/pbuilderrc_xH2D --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.aVMovsf0/b2 --logfile b2/build.log ironic-python-agent_9.14.0-5.dsc'
+  SUDO_GID=112
+  SUDO_UID=107
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://213.165.73.152:3128
 I: uname -a
-  Linux ionos2-i386 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux
+  Linux i-capture-the-hostname 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux
 I: ls -l /bin
-  lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/56152/tmp/hooks/D02_print_environment finished
+  lrwxrwxrwx 1 root root 7 Nov 22  2024 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -438,7 +470,7 @@
 Get: 264 http://deb.debian.org/debian unstable/main i386 python3-tooz all 6.3.0-4 [52.6 kB]
 Get: 265 http://deb.debian.org/debian unstable/main i386 python3-werkzeug all 3.1.3-2 [207 kB]
 Get: 266 http://deb.debian.org/debian unstable/main i386 qemu-utils i386 1:9.2.0+ds-3+b1 [2055 kB]
-Fetched 97.5 MB in 4s (26.9 MB/s)
+Fetched 97.5 MB in 2s (43.0 MB/s)
 Preconfiguring packages ...
 Selecting previously unselected package freeipmi-common.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19838 files and directories currently installed.)
@@ -1290,8 +1322,8 @@
 Setting up tzdata (2024b-4) ...
 
 Current default time zone: 'Etc/UTC'
-Local time is now:      Sat Jan  4 14:37:59 UTC 2025.
-Universal Time is now:  Sat Jan  4 14:37:59 UTC 2025.
+Local time is now:      Fri Feb  6 21:11:27 UTC 2026.
+Universal Time is now:  Fri Feb  6 21:11:27 UTC 2026.
 Run 'dpkg-reconfigure tzdata' if you wish to change it.
 
 Setting up libpython3.13-minimal:i386 (3.13.1-3) ...
@@ -1555,7 +1587,11 @@
 fakeroot is already the newest version (1.36.2-1).
 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
 I: Building the package
-I: Running cd /build/reproducible-path/ironic-python-agent-9.14.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../ironic-python-agent_9.14.0-5_source.changes
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for unstable
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/ironic-python-agent-9.14.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../ironic-python-agent_9.14.0-5_source.changes
 dpkg-buildpackage: info: source package ironic-python-agent
 dpkg-buildpackage: info: source version 9.14.0-5
 dpkg-buildpackage: info: source distribution unstable
@@ -1694,21 +1730,26 @@
 py3versions: no X-Python3-Version in control file, using supported versions
 pkgos-dh_auto_install --no-py2 --in-tmp
 + PKGOS_IN_TMP=no
-+ echo WARNING: --no-py2 is deprecated and always on.
++ for i in $@
++ case "${1}" in
++ echo 'WARNING: --no-py2 is deprecated and always on.'
 WARNING: --no-py2 is deprecated and always on.
 + shift
++ for i in $@
++ case "${1}" in
 + PKGOS_IN_TMP=yes
 + shift
-+ dpkg-parsechangelog -SSource
+++ dpkg-parsechangelog -SSource
 + SRC_PKG_NAME=ironic-python-agent
-+ echo ironic-python-agent
-+ sed s/python-//
+++ echo ironic-python-agent
+++ sed s/python-//
 + PY_MODULE_NAME=ironic-agent
-+ py3versions -vr
-+ PYTHON3S=3.13 3.12
-+ [ yes = yes ]
+++ py3versions -vr
++ PYTHON3S='3.13 3.12'
++ '[' yes = yes ']'
 + TARGET_DIR=tmp
-+ pwd
++ for pyvers in ${PYTHON3S}
+++ pwd
 + python3.13 setup.py install --install-layout=deb --root /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp
 /usr/lib/python3/dist-packages/setuptools/__init__.py:94: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
 !!
@@ -1753,103 +1794,103 @@
 [pbr] AUTHORS complete (0.0s)
 running build
 running build_py
-creating build/lib/ironic_python_agent/tests/functional
-copying ironic_python_agent/tests/functional/test_commands.py -> build/lib/ironic_python_agent/tests/functional
-copying ironic_python_agent/tests/functional/base.py -> build/lib/ironic_python_agent/tests/functional
-copying ironic_python_agent/tests/functional/__init__.py -> build/lib/ironic_python_agent/tests/functional
-creating build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_image.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_base.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_rescue.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_clean.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_flow.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_standby.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_log.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_poll.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_deploy.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/__init__.py -> build/lib/ironic_python_agent/tests/unit/extensions
-copying ironic_python_agent/tests/unit/extensions/test_service.py -> build/lib/ironic_python_agent/tests/unit/extensions
-creating build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia
-copying ironic_python_agent/tests/unit/hardware_managers/nvidia/test_nvidia_fw_update.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia
-copying ironic_python_agent/tests/unit/hardware_managers/nvidia/__init__.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia
 creating build/lib/ironic_python_agent/cmd
+copying ironic_python_agent/cmd/inspect.py -> build/lib/ironic_python_agent/cmd
 copying ironic_python_agent/cmd/agent.py -> build/lib/ironic_python_agent/cmd
 copying ironic_python_agent/cmd/__init__.py -> build/lib/ironic_python_agent/cmd
-copying ironic_python_agent/cmd/inspect.py -> build/lib/ironic_python_agent/cmd
 creating build/lib/ironic_python_agent/api
 copying ironic_python_agent/api/__init__.py -> build/lib/ironic_python_agent/api
 copying ironic_python_agent/api/app.py -> build/lib/ironic_python_agent/api
-copying ironic_python_agent/tests/unit/test_disk_partitioner.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_dmi_inspector.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_disk_utils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_base.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_agent.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_qemu_img.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_numa_inspector.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_api.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_hardware.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_tls_utils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_format_inspector.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_raid_utils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_burnin.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_netutils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_efi_utils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_encoding.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/base.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_inject_files.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_utils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/__init__.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_errors.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/dmi_inspector_data.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_multi_hardware.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_partition_utils.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_inspector.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/test_ironic_api_client.py -> build/lib/ironic_python_agent/tests/unit
-copying ironic_python_agent/tests/unit/hardware_managers/test_cna.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers
-copying ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers
-copying ironic_python_agent/tests/unit/hardware_managers/__init__.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers
-copying ironic_python_agent/tests/__init__.py -> build/lib/ironic_python_agent/tests
-copying ironic_python_agent/format_inspector.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/qemu_img.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/disk_partitioner.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/burnin.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/raid_utils.py -> build/lib/ironic_python_agent
+creating build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/flow.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/service.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/log.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/clean.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/__init__.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/image.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/deploy.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/rescue.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/base.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/poll.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/extensions/standby.py -> build/lib/ironic_python_agent/extensions
 copying ironic_python_agent/numa_inspector.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/efi_utils.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/netutils.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/encoding.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/partition_utils.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/ironic_api_client.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/config.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/dmi_inspector.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/inspect.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/version.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/tls_utils.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/agent.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/hardware.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/raid_utils.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/efi_utils.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/ironic_api_client.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/inject_files.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/inspector.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/disk_utils.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/agent.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/__init__.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/format_inspector.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/burnin.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/tls_utils.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/utils.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/config.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/disk_partitioner.py -> build/lib/ironic_python_agent
 copying ironic_python_agent/errors.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/inspect.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/inspector.py -> build/lib/ironic_python_agent
-copying ironic_python_agent/inject_files.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/qemu_img.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/partition_utils.py -> build/lib/ironic_python_agent
+copying ironic_python_agent/hardware.py -> build/lib/ironic_python_agent
+creating build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia
+copying ironic_python_agent/tests/unit/hardware_managers/nvidia/test_nvidia_fw_update.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia
+copying ironic_python_agent/tests/unit/hardware_managers/nvidia/__init__.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia
+creating build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_rescue.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_flow.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_base.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_clean.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_image.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_log.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_deploy.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_poll.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/__init__.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_service.py -> build/lib/ironic_python_agent/tests/unit/extensions
+copying ironic_python_agent/tests/unit/extensions/test_standby.py -> build/lib/ironic_python_agent/tests/unit/extensions
 creating build/lib/ironic_python_agent/hardware_managers
-copying ironic_python_agent/hardware_managers/cna.py -> build/lib/ironic_python_agent/hardware_managers
 copying ironic_python_agent/hardware_managers/mlnx.py -> build/lib/ironic_python_agent/hardware_managers
 copying ironic_python_agent/hardware_managers/__init__.py -> build/lib/ironic_python_agent/hardware_managers
-creating build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/poll.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/standby.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/service.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/clean.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/flow.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/log.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/base.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/rescue.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/__init__.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/deploy.py -> build/lib/ironic_python_agent/extensions
-copying ironic_python_agent/extensions/image.py -> build/lib/ironic_python_agent/extensions
+copying ironic_python_agent/hardware_managers/cna.py -> build/lib/ironic_python_agent/hardware_managers
+creating build/lib/ironic_python_agent/tests/functional
+copying ironic_python_agent/tests/functional/test_commands.py -> build/lib/ironic_python_agent/tests/functional
+copying ironic_python_agent/tests/functional/__init__.py -> build/lib/ironic_python_agent/tests/functional
+copying ironic_python_agent/tests/functional/base.py -> build/lib/ironic_python_agent/tests/functional
+copying ironic_python_agent/tests/__init__.py -> build/lib/ironic_python_agent/tests
+copying ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers
+copying ironic_python_agent/tests/unit/hardware_managers/test_cna.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers
+copying ironic_python_agent/tests/unit/hardware_managers/__init__.py -> build/lib/ironic_python_agent/tests/unit/hardware_managers
+copying ironic_python_agent/tests/unit/test_ironic_api_client.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_tls_utils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_netutils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_partition_utils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_numa_inspector.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_base.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_multi_hardware.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_efi_utils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_utils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_errors.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_dmi_inspector.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_inject_files.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/dmi_inspector_data.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_raid_utils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_disk_utils.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_api.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/__init__.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_format_inspector.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_disk_partitioner.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_inspector.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_burnin.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_hardware.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_qemu_img.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_encoding.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/test_agent.py -> build/lib/ironic_python_agent/tests/unit
+copying ironic_python_agent/tests/unit/base.py -> build/lib/ironic_python_agent/tests/unit
 running egg_info
 creating ironic_python_agent.egg-info
 writing ironic_python_agent.egg-info/PKG-INFO
@@ -1869,203 +1910,204 @@
 running install_lib
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/format_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/qemu_img.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/disk_partitioner.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/numa_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/netutils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/encoding.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/dmi_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/inspect.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/version.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/raid_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/efi_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/ironic_api_client.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/inject_files.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/disk_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers
-copying build/lib/ironic_python_agent/hardware_managers/cna.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers
 copying build/lib/ironic_python_agent/hardware_managers/mlnx.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers
 copying build/lib/ironic_python_agent/hardware_managers/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers
-creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/poll.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/standby.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/service.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/clean.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/flow.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/log.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/rescue.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/deploy.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
-copying build/lib/ironic_python_agent/extensions/image.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/hardware_managers/cna.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers
+copying build/lib/ironic_python_agent/agent.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
+copying build/lib/ironic_python_agent/cmd/inspect.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
+copying build/lib/ironic_python_agent/cmd/agent.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
+copying build/lib/ironic_python_agent/cmd/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
+copying build/lib/ironic_python_agent/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/format_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
 copying build/lib/ironic_python_agent/burnin.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/tls_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/config.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/disk_partitioner.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/errors.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/qemu_img.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests
+copying build/lib/ironic_python_agent/tests/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_disk_partitioner.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_dmi_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_disk_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_agent.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_qemu_img.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_ironic_api_client.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_tls_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_netutils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_partition_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
 copying build/lib/ironic_python_agent/tests/unit/test_numa_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_api.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_hardware.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_multi_hardware.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_efi_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_errors.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers
-copying build/lib/ironic_python_agent/tests/unit/hardware_managers/test_cna.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers
+copying build/lib/ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia
 copying build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia/test_nvidia_fw_update.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia
 copying build/lib/ironic_python_agent/tests/unit/hardware_managers/nvidia/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia
-copying build/lib/ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers
+copying build/lib/ironic_python_agent/tests/unit/hardware_managers/test_cna.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers
 copying build/lib/ironic_python_agent/tests/unit/hardware_managers/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers
-copying build/lib/ironic_python_agent/tests/unit/test_tls_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_dmi_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_inject_files.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/dmi_inspector_data.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_raid_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_disk_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_api.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_format_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_disk_partitioner.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_burnin.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_hardware.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_qemu_img.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
-copying build/lib/ironic_python_agent/tests/unit/extensions/test_image.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
-copying build/lib/ironic_python_agent/tests/unit/extensions/test_base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/extensions/test_rescue.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
-copying build/lib/ironic_python_agent/tests/unit/extensions/test_clean.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/extensions/test_flow.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
-copying build/lib/ironic_python_agent/tests/unit/extensions/test_standby.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
+copying build/lib/ironic_python_agent/tests/unit/extensions/test_base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
+copying build/lib/ironic_python_agent/tests/unit/extensions/test_clean.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
+copying build/lib/ironic_python_agent/tests/unit/extensions/test_image.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/extensions/test_log.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
-copying build/lib/ironic_python_agent/tests/unit/extensions/test_poll.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/extensions/test_deploy.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
+copying build/lib/ironic_python_agent/tests/unit/extensions/test_poll.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/extensions/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/extensions/test_service.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
-copying build/lib/ironic_python_agent/tests/unit/test_format_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_raid_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_burnin.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_netutils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_efi_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/extensions/test_standby.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions
 copying build/lib/ironic_python_agent/tests/unit/test_encoding.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
+copying build/lib/ironic_python_agent/tests/unit/test_agent.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
 copying build/lib/ironic_python_agent/tests/unit/base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_inject_files.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_errors.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/dmi_inspector_data.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_multi_hardware.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_partition_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
-copying build/lib/ironic_python_agent/tests/unit/test_ironic_api_client.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional
 copying build/lib/ironic_python_agent/tests/functional/test_commands.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional
-copying build/lib/ironic_python_agent/tests/functional/base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional
 copying build/lib/ironic_python_agent/tests/functional/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional
-copying build/lib/ironic_python_agent/tests/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests
-copying build/lib/ironic_python_agent/raid_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/numa_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/efi_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/netutils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/encoding.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/partition_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/ironic_api_client.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/config.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/dmi_inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/version.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/tls_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/agent.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/hardware.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
-copying build/lib/ironic_python_agent/cmd/agent.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
-copying build/lib/ironic_python_agent/cmd/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
-copying build/lib/ironic_python_agent/cmd/inspect.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd
-copying build/lib/ironic_python_agent/disk_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/errors.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/inspect.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/tests/functional/base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional
+creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/flow.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/service.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/log.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/clean.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/image.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/deploy.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/rescue.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/base.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/poll.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
+copying build/lib/ironic_python_agent/extensions/standby.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions
 creating /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api
 copying build/lib/ironic_python_agent/api/__init__.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api
 copying build/lib/ironic_python_agent/api/app.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api
-copying build/lib/ironic_python_agent/inspector.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-copying build/lib/ironic_python_agent/inject_files.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/format_inspector.py to format_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/qemu_img.py to qemu_img.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_partitioner.py to disk_partitioner.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/cna.py to cna.cpython-313.pyc
+copying build/lib/ironic_python_agent/partition_utils.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+copying build/lib/ironic_python_agent/hardware.py -> /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/numa_inspector.py to numa_inspector.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/netutils.py to netutils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/encoding.py to encoding.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/dmi_inspector.py to dmi_inspector.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspect.py to inspect.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/version.py to version.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/raid_utils.py to raid_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/efi_utils.py to efi_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/ironic_api_client.py to ironic_api_client.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inject_files.py to inject_files.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspector.py to inspector.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_utils.py to disk_utils.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/mlnx.py to mlnx.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/poll.py to poll.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/standby.py to standby.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/service.py to service.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/clean.py to clean.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/flow.py to flow.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/log.py to log.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/base.py to base.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/rescue.py to rescue.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/deploy.py to deploy.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/image.py to image.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/cna.py to cna.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/agent.py to agent.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/inspect.py to inspect.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/agent.py to agent.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/__init__.py to __init__.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/__init__.py to __init__.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/format_inspector.py to format_inspector.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/burnin.py to burnin.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_partitioner.py to test_disk_partitioner.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_dmi_inspector.py to test_dmi_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_utils.py to test_disk_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_base.py to test_base.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_agent.py to test_agent.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_qemu_img.py to test_qemu_img.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tls_utils.py to tls_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/utils.py to utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/config.py to config.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_partitioner.py to disk_partitioner.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/errors.py to errors.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/qemu_img.py to qemu_img.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/__init__.py to __init__.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_ironic_api_client.py to test_ironic_api_client.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_tls_utils.py to test_tls_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_netutils.py to test_netutils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_partition_utils.py to test_partition_utils.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_numa_inspector.py to test_numa_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_api.py to test_api.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_hardware.py to test_hardware.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_cna.py to test_cna.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_base.py to test_base.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware.py to test_multi_hardware.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_efi_utils.py to test_efi_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_utils.py to test_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_errors.py to test_errors.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py to test_mlnx.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia/test_nvidia_fw_update.py to test_nvidia_fw_update.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py to test_mlnx.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_cna.py to test_cna.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_tls_utils.py to test_tls_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_image.py to test_image.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_base.py to test_base.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_dmi_inspector.py to test_dmi_inspector.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inject_files.py to test_inject_files.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/dmi_inspector_data.py to dmi_inspector_data.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_raid_utils.py to test_raid_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_utils.py to test_disk_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_api.py to test_api.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/__init__.py to __init__.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_format_inspector.py to test_format_inspector.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py to test_multi_hardware_clean_steps.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_partitioner.py to test_disk_partitioner.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inspector.py to test_inspector.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_burnin.py to test_burnin.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_hardware.py to test_hardware.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_qemu_img.py to test_qemu_img.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_rescue.py to test_rescue.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_clean.py to test_clean.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_flow.py to test_flow.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_standby.py to test_standby.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_base.py to test_base.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_clean.py to test_clean.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_image.py to test_image.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_log.py to test_log.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_poll.py to test_poll.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_deploy.py to test_deploy.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_poll.py to test_poll.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/__init__.py to __init__.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_service.py to test_service.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_format_inspector.py to test_format_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_raid_utils.py to test_raid_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_burnin.py to test_burnin.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_netutils.py to test_netutils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_efi_utils.py to test_efi_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_standby.py to test_standby.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_encoding.py to test_encoding.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_agent.py to test_agent.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/base.py to base.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inject_files.py to test_inject_files.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_utils.py to test_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_errors.py to test_errors.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/dmi_inspector_data.py to dmi_inspector_data.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py to test_multi_hardware_clean_steps.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware.py to test_multi_hardware.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_partition_utils.py to test_partition_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inspector.py to test_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_ironic_api_client.py to test_ironic_api_client.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/test_commands.py to test_commands.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/base.py to base.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/raid_utils.py to raid_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/numa_inspector.py to numa_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/efi_utils.py to efi_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/netutils.py to netutils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/encoding.py to encoding.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/partition_utils.py to partition_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/ironic_api_client.py to ironic_api_client.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/config.py to config.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/dmi_inspector.py to dmi_inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/version.py to version.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tls_utils.py to tls_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/agent.py to agent.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware.py to hardware.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/agent.py to agent.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/inspect.py to inspect.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_utils.py to disk_utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/__init__.py to __init__.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/utils.py to utils.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/errors.py to errors.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspect.py to inspect.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/base.py to base.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/flow.py to flow.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/service.py to service.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/log.py to log.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/clean.py to clean.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/__init__.py to __init__.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/image.py to image.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/deploy.py to deploy.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/rescue.py to rescue.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/base.py to base.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/poll.py to poll.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/standby.py to standby.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api/__init__.py to __init__.cpython-313.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api/app.py to app.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspector.py to inspector.cpython-313.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inject_files.py to inject_files.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/partition_utils.py to partition_utils.cpython-313.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware.py to hardware.cpython-313.pyc
 running install_egg_info
 Copying ironic_python_agent.egg-info to /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent-9.14.0.egg-info
 Skipping SOURCES.txt
 running install_scripts
 Installing ironic-collect-introspection-data script to /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/bin
 Installing ironic-python-agent script to /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/bin
-+ pwd
++ for pyvers in ${PYTHON3S}
+++ pwd
 + python3.12 setup.py install --install-layout=deb --root /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp
 /usr/lib/python3/dist-packages/setuptools/__init__.py:94: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
 !!
@@ -2118,96 +2160,96 @@
 writing top-level names to ironic_python_agent.egg-info/top_level.txt
 [pbr] Reusing existing SOURCES.txt
 running install_lib
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/format_inspector.py to format_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/qemu_img.py to qemu_img.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_partitioner.py to disk_partitioner.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/cna.py to cna.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/numa_inspector.py to numa_inspector.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/netutils.py to netutils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/encoding.py to encoding.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/dmi_inspector.py to dmi_inspector.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspect.py to inspect.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/version.py to version.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/raid_utils.py to raid_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/efi_utils.py to efi_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/ironic_api_client.py to ironic_api_client.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inject_files.py to inject_files.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspector.py to inspector.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_utils.py to disk_utils.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/mlnx.py to mlnx.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/poll.py to poll.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/standby.py to standby.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/service.py to service.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/clean.py to clean.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/flow.py to flow.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/log.py to log.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/base.py to base.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/rescue.py to rescue.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/deploy.py to deploy.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/image.py to image.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware_managers/cna.py to cna.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/agent.py to agent.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/inspect.py to inspect.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/agent.py to agent.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/__init__.py to __init__.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/__init__.py to __init__.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/format_inspector.py to format_inspector.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/burnin.py to burnin.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_partitioner.py to test_disk_partitioner.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_dmi_inspector.py to test_dmi_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_utils.py to test_disk_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_base.py to test_base.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_agent.py to test_agent.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_qemu_img.py to test_qemu_img.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tls_utils.py to tls_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/utils.py to utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/config.py to config.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_partitioner.py to disk_partitioner.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/errors.py to errors.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/qemu_img.py to qemu_img.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/__init__.py to __init__.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_ironic_api_client.py to test_ironic_api_client.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_tls_utils.py to test_tls_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_netutils.py to test_netutils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_partition_utils.py to test_partition_utils.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_numa_inspector.py to test_numa_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_api.py to test_api.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_hardware.py to test_hardware.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_cna.py to test_cna.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_base.py to test_base.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware.py to test_multi_hardware.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_efi_utils.py to test_efi_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_utils.py to test_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_errors.py to test_errors.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py to test_mlnx.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia/test_nvidia_fw_update.py to test_nvidia_fw_update.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/nvidia/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_mlnx.py to test_mlnx.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/test_cna.py to test_cna.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/hardware_managers/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_tls_utils.py to test_tls_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_image.py to test_image.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_base.py to test_base.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_dmi_inspector.py to test_dmi_inspector.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inject_files.py to test_inject_files.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/dmi_inspector_data.py to dmi_inspector_data.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_raid_utils.py to test_raid_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_utils.py to test_disk_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_api.py to test_api.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/__init__.py to __init__.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_format_inspector.py to test_format_inspector.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py to test_multi_hardware_clean_steps.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_disk_partitioner.py to test_disk_partitioner.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inspector.py to test_inspector.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_burnin.py to test_burnin.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_hardware.py to test_hardware.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_qemu_img.py to test_qemu_img.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_rescue.py to test_rescue.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_clean.py to test_clean.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_flow.py to test_flow.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_standby.py to test_standby.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_base.py to test_base.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_clean.py to test_clean.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_image.py to test_image.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_log.py to test_log.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_poll.py to test_poll.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_deploy.py to test_deploy.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_poll.py to test_poll.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/__init__.py to __init__.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_service.py to test_service.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_format_inspector.py to test_format_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_raid_utils.py to test_raid_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_burnin.py to test_burnin.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_netutils.py to test_netutils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_efi_utils.py to test_efi_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/extensions/test_standby.py to test_standby.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_encoding.py to test_encoding.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_agent.py to test_agent.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/base.py to base.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inject_files.py to test_inject_files.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_utils.py to test_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_errors.py to test_errors.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/dmi_inspector_data.py to dmi_inspector_data.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware_clean_steps.py to test_multi_hardware_clean_steps.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_multi_hardware.py to test_multi_hardware.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_partition_utils.py to test_partition_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_inspector.py to test_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/unit/test_ironic_api_client.py to test_ironic_api_client.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/test_commands.py to test_commands.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/base.py to base.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/raid_utils.py to raid_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/numa_inspector.py to numa_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/efi_utils.py to efi_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/netutils.py to netutils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/encoding.py to encoding.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/partition_utils.py to partition_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/ironic_api_client.py to ironic_api_client.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/config.py to config.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/dmi_inspector.py to dmi_inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/version.py to version.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tls_utils.py to tls_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/agent.py to agent.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware.py to hardware.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/agent.py to agent.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/cmd/inspect.py to inspect.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/disk_utils.py to disk_utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/__init__.py to __init__.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/utils.py to utils.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/errors.py to errors.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspect.py to inspect.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/tests/functional/base.py to base.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/flow.py to flow.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/service.py to service.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/log.py to log.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/clean.py to clean.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/__init__.py to __init__.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/image.py to image.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/deploy.py to deploy.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/rescue.py to rescue.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/base.py to base.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/poll.py to poll.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/extensions/standby.py to standby.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api/__init__.py to __init__.cpython-312.pyc
 byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/api/app.py to app.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inspector.py to inspector.cpython-312.pyc
-byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/inject_files.py to inject_files.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/partition_utils.py to partition_utils.cpython-312.pyc
+byte-compiling /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent/hardware.py to hardware.cpython-312.pyc
 running install_egg_info
 removing '/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent-9.14.0.egg-info' (and everything under it)
 Copying ironic_python_agent.egg-info to /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages/ironic_python_agent-9.14.0.egg-info
@@ -2215,10 +2257,10 @@
 running install_scripts
 Installing ironic-collect-introspection-data script to /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/bin
 Installing ironic-python-agent script to /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/bin
-+ pwd
-+ rm -rf /build/reproducible-path/ironic-python-agent-9.14.0/debian/python*/usr/lib/python*/dist-packages/*.pth
-+ pwd
-+ rm -rf /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python*/dist-packages/*.pth
+++ pwd
++ rm -rf '/build/reproducible-path/ironic-python-agent-9.14.0/debian/python*/usr/lib/python*/dist-packages/*.pth'
+++ pwd
++ rm -rf '/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python*/dist-packages/*.pth'
 pkgos-dh_auto_test --no-py2 'ironic_python_agent\.tests\.unit\.(?!test_inspector\.TestWaitForDhcp\.test_timeout)'
 + PKGOS_TEST_PARALLEL=yes
 + PKGOS_TEST_SERIAL=no
@@ -2226,125 +2268,47 @@
 + PYTHON3S=disabled
 + TEST_PARALLEL_OPT=--parallel
 + TEST_SERIAL_OPT=
-+ echo WARNING: --no-py2 is deprecated, and always on.
++ for i in $@
++ case "${1}" in
++ echo 'WARNING: --no-py2 is deprecated, and always on.'
 WARNING: --no-py2 is deprecated, and always on.
 + shift
-+ py3versions -vr
-+ PYTHON3S=3.13 3.12
-+ [ yes = no ]
-+ [ no = yes ]
-+ [ 3.13 = disabled ]
-+ echo 3.13
-+ cut -d. -f1
++ for i in $@
++ case "${1}" in
+++ py3versions -vr
++ PYTHON3S='3.13 3.12'
++ '[' yes = no ']'
++ '[' no = yes ']'
++ for pyvers in ${PYTHON3S}
++ '[' 3.13 = disabled ']'
+++ echo 3.13
+++ cut -d. -f1
 + PYMAJOR=3
-+ echo ===> Testing with python (python3)
++ echo '===> Testing with python (python3)'
 ===> Testing with python (python3)
-+ pwd
-+ [ -d /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages ]
-+ [ -z  ]
-+ pwd
-+ echo Implicitly adding PYTHONPATH=/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages
+++ pwd
++ '[' -d /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages ']'
++ '[' -z '' ']'
+++ pwd
++ echo 'Implicitly adding PYTHONPATH=/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages'
 Implicitly adding PYTHONPATH=/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages
-+ pwd
+++ pwd
 + export PYTHONPATH=/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages
-+ [ -e .stestr.conf ]
-+ [ -x /usr/bin/python3-stestr ]
++ PYTHONPATH=/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages
++ '[' -e .stestr.conf ']'
++ '[' -x /usr/bin/python3-stestr ']'
 + STESTR=stestr
 + rm -rf .stestr
-+ PYTHON=python3.13 stestr run --parallel --subunit ironic_python_agent\.tests\.unit\.(?!test_inspector\.TestWaitForDhcp\.test_timeout)
++ PYTHON=python3.13
++ stestr run --parallel --subunit 'ironic_python_agent\.tests\.unit\.(?!test_inspector\.TestWaitForDhcp\.test_timeout)'
 + subunit2pyunit
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq ... ok
-   ERROR [root] Failed Prerequisite check. Unexpected error while running command.
+   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4104903416'>: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update ... ok
-   ERROR [root] Tried to execute fake.fake_sync_command, agent is still executing Command name: name, params: {}, status: RUNNING, result: None.
    ERROR [root] Duplicate componentFlavor MT_0000000540
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception ... ok
-   ERROR [root] Invalid parameters for image {'url': 'http://10.10.10.10/firmware_images/fw2.bin', 'checksum': 'a94e683ea16d9ae44768f0a65942234c', 'checksumType': 'sha512', 'component': 'MT_0000000652', 'version': '24.34.1002'},please provide the following parameters url, checksum, checksumType, componentFlavor, version
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card ... ok
- WARNING [root] Something went wrong when readlink for interface eth2. Error: fake
-   ERROR [root] Invalid content error: Invalid request body: baz
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
-    result = ext.execute(command_part, **kwargs)
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-ironic_python_agent.errors.InvalidContentError: Invalid request body: baz
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content ... ok
-   ERROR [root] Command execution error: Command execution failed: foo bar baz
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
-    result = ext.execute(command_part, **kwargs)
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-ironic_python_agent.errors.CommandExecutionError: Command execution failed: foo bar baz
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver ... ok
-   ERROR [root] Extension do not found
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 267, in execute_command
-    ext = self.get_extension(extension_part)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 238, in get_extension
-    ext = self.ext_mgr[extension_name].obj
-          ~~~~~~~~~~~~^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/stevedore/extension.py", line 340, in __getitem__
-    return self._extensions_by_name[name]
-           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
-KeyError: 'do'
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step ... ok
+ WARNING [root] Mismatched hardware managers versions. Agent version: {'specific': '1'}, node version: {'not_specific': '1'}
    ERROR [root] Rescue Operation failed when writing the hashed rescue password to the password file. Error 
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/rescue.py", line 48, in write_rescue_password
@@ -2359,126 +2323,31 @@
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
 OSError
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path ... ok
-   ERROR [root] Unexpected exception performing clean step erase_devices. RuntimeError: boom
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-RuntimeError: boom
-   ERROR [root] Command failed: execute_clean_step, error: Clean step failed: Unexpected exception performing clean step erase_devices. RuntimeError: boom
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-RuntimeError: boom
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 88, in execute_clean_step
-    raise errors.CleaningError(msg)
-ironic_python_agent.errors.CleaningError: Clean step failed: Unexpected exception performing clean step erase_devices. RuntimeError: boom
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception ... ok
-   ERROR [root] Error performing clean step erase_devices
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-   ERROR [root] Command failed: execute_clean_step, error: Block device caused unknown error: I'm a teapot
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file ... ok
-   ERROR [root] Failed to move file: /firmware_images/fw1.bin, 
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected ... ok
-   ERROR [root] Malformed clean_step, no "step" key: {}
-   ERROR [root] Command failed: execute_clean_step, error: Malformed clean_step, no "step" key: {}
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 74, in execute_clean_step
-    raise ValueError(msg)
-ValueError: Malformed clean_step, no "step" key: {}
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step ... ok
-   ERROR [root] Failed to open URL data: HTTP Error 500: Internal Error
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled ... ok
-   ERROR [root] Failed to open URL data: <urlopen error URL error>
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result ... ok
-   ERROR [root] Clean version mismatch for command execute_clean_step
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled ... ok
-   ERROR [root] Mismatch provided checksum a94e683ea16d9ae44768f0a65942234d for image http://10.10.10.10/firmware_images/fw1.bin
+ WARNING [root] The root device was not detected in 27 seconds
+   ERROR [root] Invalid parameters for image {'url': 'http://10.10.10.10/firmware_images/fw2.bin', 'checksum': 'a94e683ea16d9ae44768f0a65942234c', 'checksumType': 'sha512', 'component': 'MT_0000000652', 'version': '24.34.1002'},please provide the following parameters url, checksum, checksumType, componentFlavor, version
+ WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'lacking kernel support'
+Stderr: None
+   ERROR [root] Failed Prerequisite check. Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [root] Failed to query tool configuration of device <Mock name='mock.dev_pci' id='4105072688'>: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: 
+ WARNING [ironic_python_agent.disk_utils] Unable to get partition table type for device hello
+ WARNING [root] The root device was not detected in 45 seconds
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boop'
+Stderr: None
    ERROR [root] Command failed: sleep, error: An error occurred: An unexpected error occurred. Please try back later.
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -2495,7 +2364,6 @@
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
 ironic_python_agent.errors.RESTError: An error occurred: An unexpected error occurred. Please try back later.
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
    ERROR [root] Command failed: start_flow, error: Command execution failed: fake.sleep was failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -2505,16 +2373,14 @@
         "%s was failed" % method
     )
 ironic_python_agent.errors.CommandExecutionError: Command execution failed: fake.sleep was failed
-   ERROR [root] The provided psid MT_0000000227 does not match the image psid MT_0000000228
- WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed ... ok
+   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4105365712'>: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [ironic_python_agent.utils] collector <Mock name='mock.name' id='4106434768'> failed: boom
+ WARNING [root] The root device was not detected in 27 seconds
+ WARNING [ironic_python_agent.efi_utils] Empty EFI partition detected.
    ERROR [root] Command failed: sleep, error: foo
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -2531,8 +2397,6 @@
   File "/usr/lib/python3.13/unittest/mock.py", line 1230, in _execute_mock_call
     raise result
 Exception: foo
-   ERROR [root] duplicate settings for device ID 1017 
-   ERROR [root] The provided firmware version 20.34.1012 does not match image firmware version 20.35.1012
    ERROR [root] Command failed: start_flow, error: Command execution failed: fake.sleep was failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -2542,275 +2406,6 @@
         "%s was failed" % method
     )
 ironic_python_agent.errors.CommandExecutionError: Command execution failed: fake.sleep was failed
-   ERROR [root] There is no deviceID provided for this settings
-   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
-   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root ... ok
-   ERROR [root] Unexpected exception performing deploy step erase_devices. RuntimeError: boom
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-RuntimeError: boom
-   ERROR [root] Command failed: execute_deploy_step, error: Deploy step failed: Unexpected exception performing deploy step erase_devices. RuntimeError: boom
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-RuntimeError: boom
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 88, in execute_deploy_step
-    raise errors.DeploymentError(msg)
-ironic_python_agent.errors.DeploymentError: Deploy step failed: Unexpected exception performing deploy step erase_devices. RuntimeError: boom
-   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
-    return _proxy.query(name, rdtype, raise_on_no_answer=raises,
-           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-                        use_network=use_network)
-                        ^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 407, in query
-    step(self._resolver.query, qname, rdtype, rdclass, tcp, source, raise_on_no_answer=False)
-         ^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 347, in _resolver
-    self.clear()
-    ~~~~~~~~~~^^
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 355, in clear
-    self._resolver = dns.resolver.Resolver(filename=self._filename)
-                     ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 945, in __init__
-    self.read_resolv_conf(filename)
-    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 1039, in read_resolv_conf
-    raise NoResolverConfiguration("no nameservers")
-dns.resolver.NoResolverConfiguration: no nameservers
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 199, in _new_conn
-    sock = connection.create_connection(
-        (self._dns_host, self.port),
-    ...<2 lines>...
-        socket_options=self.socket_options,
-    )
-  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 60, in create_connection
-    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
-               ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 558, in getaddrinfo
-    qname, addrs = _getaddrinfo_lookup(host, family, flags)
-                   ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 529, in _getaddrinfo_lookup
-    raise err
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 518, in _getaddrinfo_lookup
-    answer = resolve(host, qfamily, False, use_network=use_network)
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 473, in resolve
-    _raise_new_error(EAI_NODATA_ERROR)
-    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 100, in _raise_new_error
-    raise error_instance.__class__(*error_instance.args)
-socket.gaierror: [Errno -2] Name or service not known
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen
-    response = self._make_request(
-        conn,
-    ...<10 lines>...
-        **response_kw,
-    )
-  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 490, in _make_request
-    raise new_e
-  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 466, in _make_request
-    self._validate_conn(conn)
-    ~~~~~~~~~~~~~~~~~~~^^^^^^
-  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1095, in _validate_conn
-    conn.connect()
-    ~~~~~~~~~~~~^^
-  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 693, in connect
-    self.sock = sock = self._new_conn()
-                       ~~~~~~~~~~~~~~^^
-  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
-    raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4ab1dd8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 667, in send
-    resp = conn.urlopen(
-        method=request.method,
-    ...<9 lines>...
-        chunked=chunked,
-    )
-  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 843, in urlopen
-    retries = retries.increment(
-        method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
-    )
-  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
-    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
-    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ab1dd8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 130, in _get_ironic_api_version
-    response = self._request('GET', '/')
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 90, in _request
-    resp = self.session.request(method,
-                                request_url,
-    ...<4 lines>...
-                                timeout=CONF.http_request_timeout,
-                                **kwargs)
-  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 589, in request
-    resp = self.send(prep, **send_kwargs)
-  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in send
-    r = adapter.send(request, **kwargs)
-  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
-    raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ab1dd8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
- WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
- WARNING [ironic_python_agent.disk_utils] Unable to get partition table type for device hello
- WARNING [ironic_python_agent.disk_utils] Failed to verify partition tables on device /dev/fake: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-   ERROR [root] Error performing deploy step erase_devices
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
-   ERROR [root] Command failed: execute_deploy_step, error: Block device caused unknown error: I'm a teapot
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-                                           **kwargs)
-  File "<string>", line 3, in dispatch_to_managers
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-   ERROR [root] Command failed: install_bootloader, error: meow
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
-    _install_grub2(device,
-    ~~~~~~~~~~~~~~^^^^^^^^
-                   root_uuid=root_uuid,
-                   ^^^^^^^^^^^^^^^^^^^^
-                   efi_system_part_uuid=efi_system_part_uuid,
-                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-                   prep_boot_part_uuid=prep_boot_part_uuid,
-                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-                   target_boot_mode=target_boot_mode)
-                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in _install_grub2
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-OSError: meow
-   ERROR [root] Malformed deploy_step, no "step" key: {}
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map ... ok
-   ERROR [root] Command failed: execute_deploy_step, error: Malformed deploy_step, no "step" key: {}
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 73, in execute_deploy_step
-    raise ValueError(msg)
-ValueError: Malformed deploy_step, no "step" key: {}
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id ... ok
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor ... ok
- WARNING [ironic_python_agent.efi_utils] Empty EFI partition detected.
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed ... ok
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command ... ok
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi ... ok
    ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -2834,15 +2429,44 @@
 Exit code: -
 Stdout: 'boom'
 Stderr: None
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
-   ERROR [root] Clean version mismatch for command execute_deploy_step
-   ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
-    raise ExecutionError()
-ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
+   ERROR [ironic_python_agent.disk_utils] Security: Unable to safety check image
+   ERROR [root] Failed to set configuration of device <Mock name='mock.dev_pci' id='4105363504'>,  ['SRIOV_EN=20']: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [root] Attempted to determine if multipath tools were present. Not detected. Error recorded: 
+   ERROR [ironic_python_agent.utils] failed to run hardware-detect utility: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [ironic_python_agent.disk_utils] Security: Image failed safety check
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
    ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -2877,6 +2501,30 @@
 Exit code: -
 Stdout: 'no umount'
 Stderr: None
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] No route to host 1.2.1.2, route record: Error: some error text
+   ERROR [ironic_python_agent.utils] JSON returned from hardware-detect cannot be decoded: Expecting value: line 1 column 1 (char 0)
+   ERROR [root] Configuraiton ESWITCH_HAIRPIN_TOT_BUFFER_SIZE[8] for device <Mock name='mock.dev_pci' id='4105365528'> is not supported with current fw
+   ERROR [root] Unexpected exception performing deploy step erase_devices. RuntimeError: boom
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+RuntimeError: boom
+   ERROR [root] Configuraiton: UNSUPPORTED_PARAM is not supported by mstconfig, please update to the latest mstflint package.
    ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -2906,85 +2554,30 @@
 Exit code: -
 Stdout: 'boom'
 Stderr: None
-ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia
-ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia ... ok
-ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls
-ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation ... ok
-   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None.
- WARNING [ironic_python_agent.extensions.image] Unable to umount vfat partitions. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/dev. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/proc. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/run. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/sys. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs
-ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs ... ok
- WARNING [root] Mismatched hardware managers versions. Agent version: {'specific': '1'}, node version: {'not_specific': '1'}
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4104919064'>: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed ... ok
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] No route to host 1.2.1.2, route record: Error: some error text
+   ERROR [root] Command failed: execute_deploy_step, error: Deploy step failed: Unexpected exception performing deploy step erase_devices. RuntimeError: boom
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+RuntimeError: boom
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 88, in execute_deploy_step
+    raise errors.DeploymentError(msg)
+ironic_python_agent.errors.DeploymentError: Deploy step failed: Unexpected exception performing deploy step erase_devices. RuntimeError: boom
  WARNING [ironic_python_agent.agent] Cannot get route to host fc00:1111::1: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -2996,48 +2589,101 @@
 Exit code: -
 Stdout: 'boom'
 Stderr: None
-   ERROR [ironic_python_agent.inspector] inspector url error 400: <MagicMock name='post().content.decode()' id='4105661728'>, proceeding with lookup
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/md/esp using the install command which does not place Secure Boot signed binaries.
- WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
-Command: grub2-install
-Exit code: 1
-Stdout: ''
-Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
- WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
-Command: grub2-install
-Exit code: 1
-Stdout: ''
-Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
-   ERROR [root] Failed to query tool configuration of device <Mock name='mock.dev_pci' id='4105740104'>: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-   ERROR [ironic_python_agent.utils] failed to run hardware-detect utility: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal ... ok
-   ERROR [ironic_python_agent.utils] JSON returned from hardware-detect cannot be decoded: Expecting value: line 1 column 1 (char 0)
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00023674964904785156 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00023674964904785156 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0008909702301025391 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0008909702301025391 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [ironic_python_agent.agent] error sending heartbeat to <Mock name='mock.api_urls' id='4107711432'>
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/agent.py", line 148, in do_heartbeat
+    self.api.heartbeat(
+    ~~~~~~~~~~~~~~~~~~^
+        uuid=self.agent.get_node_uuid(),
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    ...<2 lines>...
+        generated_cert=self.agent.generated_cert,
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+    )
+    ^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+Exception: uh oh!
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0015032291412353516 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0015032291412353516 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0019428730010986328 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0019428730010986328 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002536773681640625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002536773681640625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0029296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0029296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0035331249237060547 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0035331249237060547 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004091501235961914 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004091501235961914 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004644632339477539 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004644632339477539 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.005190134048461914 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue ... ok
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder ... ok
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib ... ok
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client ... ok
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images ... ok
+   ERROR [root] Error performing deploy step erase_devices
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+   ERROR [root] Command failed: execute_deploy_step, error: Block device caused unknown error: I'm a teapot
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.000148773193359375 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.000148773193359375 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0006229877471923828 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0006229877471923828 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0010170936584472656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0010170936584472656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0014088153839111328 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
    ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -3045,145 +2691,71 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
     raise ExecutionError()
 ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry ...    ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4104918880'>: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps ... ok
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute ... ok
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize ... ok
- WARNING [ironic_python_agent.disk_utils] Unable to probe for partitions on device /dev/fake, the partitioning table may be broken. Error: Unexpected error while running command.
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0014088153839111328 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002087116241455078 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002087116241455078 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0026264190673828125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0026264190673828125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003165006637573242 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003165006637573242 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003707408905029297 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003707408905029297 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004216432571411133 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004216432571411133 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004701852798461914 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [root] Finding the partition with UUID 11111111-2222-3333-4444-555555555555 on device /dev/fake failed with Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image ... ok
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device WARNING [root] Device /dev/fake1 is inaccessible, skipping... Error: nope
- ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2 ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size ... ok
- WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
- WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
-   ERROR [root] Failed to set configuration of device <Mock name='mock.dev_pci' id='4104920904'>,  ['SRIOV_EN=20']: Unexpected error while running command.
+   ERROR [root] Malformed deploy_step, no "step" key: {}
+   ERROR [root] Command failed: execute_deploy_step, error: Malformed deploy_step, no "step" key: {}
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 73, in execute_deploy_step
+    raise ValueError(msg)
+ValueError: Malformed deploy_step, no "step" key: {}
+   ERROR [root] Command failed: foo_command, error: command execution failed
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_agent.py", line 44, in foo_execute
+    raise EXPECTED_ERROR
+RuntimeError: command execution failed
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00015091896057128906 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00015091896057128906 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0007984638214111328 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0007984638214111328 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.001340627670288086 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.001340627670288086 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0023899078369140625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0023899078369140625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0029299259185791016 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0029299259185791016 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0034368038177490234 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0034368038177490234 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0039293766021728516 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0039293766021728516 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004425048828125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004425048828125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0049228668212890625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [ironic_python_agent.inspector] inspector url error 400: <MagicMock name='post().content.decode()' id='4105805088'>, proceeding with lookup
+ WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0049228668212890625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.dmi_inspector] Failed to parse Handle type in dmi output: list index out of range
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.022931814193725586 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [ironic_python_agent.utils] boom
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception ... ok
+   ERROR [ironic_python_agent.utils] failed to run dmidecode: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- WARNING [root] Can't find field vendor for device lo in device class net
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown ... ok
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts ... ok
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails ... ok
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger ... ok
- WARNING [root] The root device was not detected in 27 seconds
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2 ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios ... ok
-   ERROR [ironic_python_agent.extensions.poll] Node lookup data can only be set when the Ironic Python Agent is running in standalone mode.
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256 ... ok
-   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'error'
-Stderr: None.
-   ERROR [root] Configuraiton ESWITCH_HAIRPIN_TOT_BUFFER_SIZE[8] for device <Mock name='mock.dev_pci' id='4104468320'> is not supported with current fw
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512 ... ok
- WARNING [root] The root device was not detected in 45 seconds
+ WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth0', <Mock id='4105799888'>), ('eth1', <Mock id='4105800256'>)]
    ERROR [root] Unexpected exception performing service step erase_devices. RuntimeError: boom
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
@@ -3199,10 +2771,9 @@
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
 RuntimeError: boom
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file ... ok
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0001926422119140625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0001926422119140625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [root] Something went wrong when readlink for interface eth2. Error: fake
    ERROR [root] Command failed: execute_service_step, error: Service step failed: Unexpected exception performing service step erase_devices. RuntimeError: boom
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
@@ -3227,38 +2798,29 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 88, in execute_service_step
     raise errors.ServicingError(msg)
 ironic_python_agent.errors.ServicingError: Service step failed: Unexpected exception performing service step erase_devices. RuntimeError: boom
- WARNING [root] Can't find field vendor for device lo in device class net
-   ERROR [root] Configuraiton: UNSUPPORTED_PARAM is not supported by mstconfig, please update to the latest mstflint package.
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
- WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
- WARNING [root] The root device was not detected in 27 seconds
- WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error ... ok
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0013730525970458984 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0013730525970458984 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0016913414001464844 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0016913414001464844 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0021791458129882812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0021791458129882812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0025110244750976562 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0025110244750976562 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0028066635131835938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0028066635131835938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0030651092529296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0030651092529296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003313302993774414 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003313302993774414 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0035605430603027344 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0035605430603027344 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0038089752197265625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
+ironic-python-agent: line 1.
+ironic-python-agent: line 2 message
+ WARNING [ironic_python_agent.numa_inspector] Failed to get list of NUMA nodes, NUMA node path does not exist: /sys/devices/system/node/
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0012364387512207031 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0012364387512207031 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
    ERROR [root] Error performing service step erase_devices
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
@@ -3274,16 +2836,12 @@
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
 ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true   ERROR [root] Command failed: execute_service_step, error: Block device caused unknown error: I'm a teapot
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0017571449279785156 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0017571449279785156 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0021941661834716797 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0021941661834716797 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0026209354400634766 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+   ERROR [root] Command failed: execute_service_step, error: Block device caused unknown error: I'm a teapot
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
@@ -3300,45 +2858,83 @@
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
 ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
- ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders ... ok
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0026209354400634766 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0030536651611328125 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0030536651611328125 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0035400390625 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0035400390625 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003976345062255859 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003976345062255859 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004451274871826172 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004451274871826172 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004908561706542969 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004908561706542969 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.005389213562011719 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106620744'> Response headers: <MagicMock name='get().headers' id='4106617984'>
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running ... ok
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter ... ok
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password ... ok
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records ... ok
+ WARNING [ironic_python_agent.netutils] Trailing byte received in an LLDP package: b'5'
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock ... ok
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails ... ok
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf ... ok
+   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 2 times.
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition ... ok
 ironic_python_agent.tests.unit.test_hardware.TestVersions.test_check_versions
 ironic_python_agent.tests.unit.test_hardware.TestVersions.test_check_versions ... ok
 ironic_python_agent.tests.unit.test_hardware.TestVersions.test_get_current_versions
 ironic_python_agent.tests.unit.test_hardware.TestVersions.test_get_current_versions ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid ... ok
+   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 3 times.
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured ... ok
+   ERROR [root] No partition with UUID 11111111-2222-3333-4444-555555555555 found on device /dev/fake
+   ERROR [root] Clean version mismatch for command execute_deploy_step
    ERROR [root] Malformed service_step, no "step" key: {}
    ERROR [root] Command failed: execute_service_step, error: Malformed service_step, no "step" key: {}
 Traceback (most recent call last):
@@ -3347,569 +2943,177 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 74, in execute_service_step
     raise ValueError(msg)
 ValueError: Malformed service_step, no "step" key: {}
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5 ... ok
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+ WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth1', <Mock id='4105800072'>)]
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath ... ok
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once ... ok
+ WARNING [root] Can't find field vendor for device lo in device class net
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Handle'
+   ERROR [ironic_python_agent.netutils] Socket for network interface eth0 said that it was ready to read we were unable to read from the socket while trying to get LLDP packet. Skipping this network interface.
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 197, in _get_lldp_info
+    lldp_info[interface[0]] = _receive_lldp_packets(s)
+                              ~~~~~~~~~~~~~~~~~~~~~^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 160, in _receive_lldp_packets
+    pkt = sock.recv(1600)
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+OSError: BOOM
+ WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Number Of Devices'
+   ERROR [root] Clean version mismatch for command execute_service_step
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0009377002716064453 seconds. Error: Received status code 401 from http://example.org, expected 200. Response body: Unauthorized Response headers: <MagicMock name='get().headers' id='4107203344'>
+ WARNING [ironic_python_agent.inspector] Failed to gather vendor id, product id or pci class from PCI device bar: 
+ WARNING [ironic_python_agent.inspector] Wrong format of vendor id, product id or pci class in PCI device baz: 
+ WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
+ WARNING [root] Can't find field vendor for device lo in device class net
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4106047304'>
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4106047304'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.001667022705078125 seconds. Error: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4106047304'>
+   ERROR [ironic_python_agent.netutils] Failed to open all RawPromiscuousSockets, attempting to close any opened sockets.
+   ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
+    raise ExecutionError()
+ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure ... ok
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: 
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks ... ok
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body:   Response headers: <Mock name='mock.headers' id='4105589704'>
+ WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device foo: 
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve ...  WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device bar: 
+ok
+/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:57: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc.
+  self.assertLess(cert.not_valid_before,
+/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:59: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc.
+  self.assertGreater(cert.not_valid_after,
+ WARNING [ironic_python_agent.disk_utils] Failed to verify partition tables on device /dev/fake: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boop'
+Stdout: None
 Stderr: None
-/bin/sh: 1: mkisofs: not found
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success ... ok
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root ... ok
-   ERROR [root] Clean version mismatch for command execute_service_step
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders ... ok
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev ... ok
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout ... ok
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase ... ok
+   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /tmp/tmpn9vi6hrm/fake_id; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
+ WARNING [ironic_python_agent.efi_utils] Invalid sgdisk line: I am a teaport
+ WARNING [ironic_python_agent.efi_utils] No UUID information provided in sgdisk output for partition 1 on device /dev/fake
+   ERROR [ironic_python_agent.utils] Failed to get list of PCI devices: 
+   ERROR [root] Tried to execute fake.fake_sync_command, agent is still executing Command name: name, params: {}, status: RUNNING, result: None.
+ WARNING [root] Device /dev/fake1 is inaccessible, skipping... Error: nope
+   ERROR [ironic_python_agent.utils] foo
+   ERROR [ironic_python_agent.utils] bar
+   ERROR [ironic_python_agent.utils] baz
+   ERROR [ironic_python_agent.utils] foo
+   ERROR [root] Failed to move file: /firmware_images/fw1.bin, 
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception ... ok
+ WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step ... ok
+   ERROR [root] Invalid content error: Invalid request body: baz
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
+    result = ext.execute(command_part, **kwargs)
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.InvalidContentError: Invalid request body: baz
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config ... ok
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: usb
+ WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
+ironic-python-agent: Copying configuration from /tmp/tmpimi1thp5/etc/ironic-python-agent to /etc/ironic-python-agent
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disksironic-python-agent: Copying configuration from /tmp/tmpimi1thp5/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
+ ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks ... ok
+   ERROR [root] Command execution error: Command execution failed: foo bar baz
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
+    result = ext.execute(command_part, **kwargs)
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.CommandExecutionError: Command execution failed: foo bar baz
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed ... ok
+ironic-python-agent: Excluding device sdh1 from virtual mediaconsideration as it is a partition.
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool_exception
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool_exception ... ok
+   ERROR [root] Failed to open URL data: HTTP Error 500: Internal Error
+ WARNING [ironic_python_agent.inspector] failed to get system journal
+ironic-python-agent: Copying configuration from /tmp/tmpqb5jh0hp/etc/ironic-python-agent to /etc/ironic-python-agent
+ironic-python-agent: Copying configuration from /tmp/tmpqb5jh0hp/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw ... ok
+   ERROR [root] Failed to open URL data: <urlopen error URL error>
+/bin/sh: line 1: mkisofs: command not found
+ironic-python-agent: /some/path/etc/ironic-python-agent not found
+ironic-python-agent: /some/path/etc/ironic-python-agent.d not found
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw_exception
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching
-ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6 ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured ... ok
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md1. Skipping
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_fw
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_fw ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package ... ok
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone ... ok
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256 ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512 ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks ... ok
-   ERROR [root] Command failed: foo_command, error: command execution failed
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields ... ok
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+   ERROR [root] Command failed: install_bootloader, error: meow
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_agent.py", line 44, in foo_execute
-    raise EXPECTED_ERROR
-RuntimeError: command execution failed
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired ... ok
- WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5 ... ok
- WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
- WARNING [ironic_python_agent.extensions.image] Failed to copy grubenv file. Error: copy failed
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0010128021240234375 seconds. Error: Received status code 401 from http://example.org, expected 200. Response body: Unauthorized Response headers: <MagicMock name='get().headers' id='4106211744'>
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0002846717834472656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0002846717834472656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition ...  WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0007545948028564453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0007545948028564453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.001110076904296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.001110076904296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0014693737030029297 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0014693737030029297 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0018260478973388672 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0018260478973388672 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0021185874938964844 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- ...  WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0021185874938964844 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.005559444427490234 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.005559444427490234 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid ...  WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.005977153778076172 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.005977153778076172 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.006303310394287109 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.006303310394287109 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0066051483154296875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2 ... skipped 'mkisofs not installed'
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00016999244689941406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00016999244689941406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0006039142608642578 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0006039142608642578 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0009064674377441406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0009064674377441406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0011970996856689453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0011970996856689453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0015022754669189453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0015022754669189453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0018930435180664062 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0018930435180664062 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002232074737548828 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002232074737548828 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002570629119873047 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002570629119873047 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002871990203857422 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002871990203857422 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0031752586364746094 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4106212112'>
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4106212112'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0019409656524658203 seconds. Error: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4106212112'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00014901161193847656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00014901161193847656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0005228519439697266 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0005228519439697266 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0008122920989990234 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- ...  WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0008122920989990234 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0010936260223388672 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0010936260223388672 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure ...  WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0014011859893798828 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0014011859893798828 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail ...  WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0017242431640625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0017242431640625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0020475387573242188 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0020475387573242188 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx ... ok
-ironic-python-agent: line 1.
-ironic-python-agent: line 2 message
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.006066322326660156 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.006066322326660156 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.010056495666503906 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.010056495666503906 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.011654138565063477 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success ... ok
-/bin/sh: 1: ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger
-ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_loggermkisofs: not found
- ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00021767616271972656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00021767616271972656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0006172657012939453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0006172657012939453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0009067058563232422 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0009067058563232422 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0017638206481933594 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0017638206481933594 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0020716190338134766 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0020716190338134766 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002359628677368164 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002359628677368164 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0026674270629882812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0026674270629882812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003027677536010742 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003027677536010742 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0033648014068603516 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0033648014068603516 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0036857128143310547 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum ... ok
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: 
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential ... ok
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body:   Response headers: <Mock name='mock.headers' id='4105871176'>
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg ... ok
-POST: /v1/commands {'name': 'do_things', 'params': []}
-GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
-POST: /v1/commands {'name': 'do_things', 'params': {'key': 'value'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands?wait=false {'name': 'do_things', 'params': {'key': 'value'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands?wait=true {'name': 'do_things', 'params': {'key': 'value'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands {}
-GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
-POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
-GOT:<WrapperTestResponse streamed [401 UNAUTHORIZED]>
-GET: /v1/status None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1/commands/abc123 None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1/commands None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1/foo None
-GOT:<WrapperTestResponse streamed [404 NOT FOUND]>
-GET: / None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1 None
-GOT:<WrapperTestResponse streamed [200 OK]>
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660 ... skipped 'mkisofs not installed'
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success ... ok
-/bin/sh: 1: mkisofs: not found
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002218484878540039 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002218484878540039 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0029032230377197266 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0029032230377197266 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003403902053833008 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003403902053833008 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003909111022949219 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003909111022949219 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface ...  WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004369258880615234 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004369258880615234 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
-ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004810333251953125 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004810333251953125 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00527644157409668 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00527644157409668 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0057277679443359375 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0057277679443359375 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.006184101104736328 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.006184101104736328 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.006648063659667969 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105969896'> Response headers: <MagicMock name='get().headers' id='4106951416'>
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf ... skipped 'mkisofs not installed'
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-   ERROR [ironic_python_agent.burnin] SMART test on /dev/sdj failed with 'string'
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096 ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
- WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: 'fake'
- WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: 'fake'
-   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /tmp/tmprewla5o4/fake_id; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device ...    ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
-ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none ... ok
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror ... ok
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'error'
-Stderr: None.
-   ERROR [ironic_python_agent.extensions.image] Umounting efi system partition failed. Attempted 3 times. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'error'
-Stderr: None
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none ... ok
-   ERROR [ironic_python_agent.burnin] fio (disk) failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 130, in _get_ironic_api_version
-    response = self._request('GET', '/')
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 90, in _request
-    resp = self.session.request(method,
-                                request_url,
-    ...<4 lines>...
-                                timeout=CONF.http_request_timeout,
-                                **kwargs)
-  File "<string>", line 3, in request
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
+    _install_grub2(device,
+    ~~~~~~~~~~~~~~^^^^^^^^
+                   root_uuid=root_uuid,
+                   ^^^^^^^^^^^^^^^^^^^^
+                   efi_system_part_uuid=efi_system_part_uuid,
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                   prep_boot_part_uuid=prep_boot_part_uuid,
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                   target_boot_mode=target_boot_mode)
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in _install_grub2
   File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
     return self._mock_call(*args, **kwargs)
            ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
@@ -3918,63 +3122,25 @@
            ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
-Exception: Boom
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4 ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty ... ok
- WARNING [ironic_python_agent.inspector] no suitable root device detected
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6 ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test ... ok
- WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'node_node': 'also_not_node'}
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member ... ok
- WARNING [ironic_python_agent.ironic_api_client] Failed looking up node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' at http://agent-api.ironic.example.org. Check if inspection has completed? Error 400: {"node": {"uuid": "deadbeef-dabb-ad00-b105-f00d00bab10c"}}
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code ... ok
+OSError: meow
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: sata
+ironic-python-agent: /tmp/tmp7_lnq3a7/etc/ironic-python-agent not found
+ironic-python-agent: /tmp/tmp7_lnq3a7/etc/ironic-python-agent.d not found
+   ERROR [root] Extension do not found
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 267, in execute_command
+    ext = self.get_extension(extension_part)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 238, in get_extension
+    ext = self.ext_mgr[extension_name].obj
+          ~~~~~~~~~~~~^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/stevedore/extension.py", line 340, in __getitem__
+    return self._extensions_by_name[name]
+           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
+KeyError: 'do'
+ironic-python-agent: Excluding device sda1 from virtual mediaconsideration as it is a partition.
+ironic-python-agent: Found possible vmedia candidate /dev/sda2, however the device failed vmedia validity checking.
+ironic-python-agent: No virtual media device detected
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: scsi
    ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -3995,16 +3161,9 @@
 Exit code: -
 Stdout: None
 Stderr: None, falling back to sysrq-trigger
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status ... ok
- WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'heartbeat_timeout': 300}
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config ... ok
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
    ERROR [root] Command failed: power_off, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1041, in _run_shutdown_command
@@ -4036,26 +3195,137 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1045, in _run_shutdown_command
     raise errors.SystemRebootError(e.exit_code, e.stdout, e.stderr)
 ironic_python_agent.errors.SystemRebootError: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
- WARNING [ironic_python_agent.ironic_api_client] Got invalid heartbeat from the API: {'node': {'uuid': 'deadbeef-dabb-ad00-b105-f00d00bab10c'}}
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device ... ok
- WARNING [root] Could not determine if /dev/sdfake is aread-only device. Error: 
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error ... ok
- WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth0', <Mock id='4104271896'>), ('eth1', <Mock id='4104271528'>)]
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt ... ok
+ironic-python-agent: Device sdh appears to not qualify as virtual due to the device size. Size: 1610612736000
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: usb
+ironic-python-agent: Was unable to execute the lsblk command. Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config_exception ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image ... ok
+ironic-python-agent: Cannot use configuration from virtual media as the agent was not booted from virtual media.
+   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
+Traceback (most recent call last):
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
+    return _proxy.query(name, rdtype, raise_on_no_answer=raises,
+           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                        use_network=use_network)
+                        ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 407, in query
+    step(self._resolver.query, qname, rdtype, rdclass, tcp, source, raise_on_no_answer=False)
+         ^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 347, in _resolver
+    self.clear()
+    ~~~~~~~~~~^^
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 355, in clear
+    self._resolver = dns.resolver.Resolver(filename=self._filename)
+                     ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 945, in __init__
+    self.read_resolv_conf(filename)
+    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 1039, in read_resolv_conf
+    raise NoResolverConfiguration("no nameservers")
+dns.resolver.NoResolverConfiguration: no nameservers
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 199, in _new_conn
+    sock = connection.create_connection(
+        (self._dns_host, self.port),
+    ...<2 lines>...
+        socket_options=self.socket_options,
+    )
+  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 60, in create_connection
+    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
+               ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 558, in getaddrinfo
+    qname, addrs = _getaddrinfo_lookup(host, family, flags)
+                   ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 529, in _getaddrinfo_lookup
+    raise err
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 518, in _getaddrinfo_lookup
+    answer = resolve(host, qfamily, False, use_network=use_network)
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 473, in resolve
+    _raise_new_error(EAI_NODATA_ERROR)
+    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 100, in _raise_new_error
+    raise error_instance.__class__(*error_instance.args)
+socket.gaierror: [Errno -2] Name or service not known
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 789, in urlopen
+    response = self._make_request(
+        conn,
+    ...<10 lines>...
+        **response_kw,
+    )
+  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 490, in _make_request
+    raise new_e
+  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 466, in _make_request
+    self._validate_conn(conn)
+    ~~~~~~~~~~~~~~~~~~~^^^^^^
+  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1095, in _validate_conn
+    conn.connect()
+    ~~~~~~~~~~~~^^
+  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 693, in connect
+    self.sock = sock = self._new_conn()
+                       ~~~~~~~~~~~~~~^^
+  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
+    raise NameResolutionError(self.host, self, e) from e
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4b71af8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 667, in send
+    resp = conn.urlopen(
+        method=request.method,
+    ...<9 lines>...
+        chunked=chunked,
+    )
+  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 843, in urlopen
+    retries = retries.increment(
+        method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
+    )
+  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
+    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4b71af8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 130, in _get_ironic_api_version
+    response = self._request('GET', '/')
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 90, in _request
+    resp = self.session.request(method,
+                                request_url,
+    ...<4 lines>...
+                                timeout=CONF.http_request_timeout,
+                                **kwargs)
+  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 589, in request
+    resp = self.send(prep, **send_kwargs)
+  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in send
+    r = adapter.send(request, **kwargs)
+  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
+    raise ConnectionError(e, request=request)
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4b71af8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+ WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
+   ERROR [ironic_python_agent.extensions.poll] Node lookup data can only be set when the Ironic Python Agent is running in standalone mode.
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+ironic-python-agent: Did not identify any virtual media candidates devices.
    ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -4066,11 +3336,7 @@
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_false
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_false ... ok
- WARNING [ironic_python_agent.netutils] Trailing byte received in an LLDP package: b'5'
+   ERROR [root] Mismatch provided checksum a94e683ea16d9ae44768f0a65942234d for image http://10.10.10.10/firmware_images/fw1.bin
    ERROR [root] Command failed: power_off, error: Error syncing system clock: Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -4127,26 +3393,67 @@
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server ... ok
- WARNING [root] Could not determine if /dev/sdfake1 is aread-only device. Error: 
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_error
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_error ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image ... ok
- WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth1', <Mock id='4104881648'>)]
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_ok ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists ...    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive ... ok
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error ... ok
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check ... ok
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5 ... ok
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf49b5328>: A problem was encountered
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3468, in dispatch_to_all_managers
+    response = getattr(manager, method)(*args, **kwargs)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
+    return fn(self, *args, **kwargs)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
+    raise RuntimeError('A problem was encountered')
+RuntimeError: A problem was encountered
+   ERROR [root] The provided psid MT_0000000227 does not match the image psid MT_0000000228
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image ... ok
+/bin/sh: line 1: mkisofs: command not found
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception ... ok
+   ERROR [root] duplicate settings for device ID 1017 
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256 ... ok
+/bin/sh: line 1: mkisofs: command not found
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path ... ok
+   ERROR [root] There is no deviceID provided for this settings
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields ... ok
+   ERROR [root] The provided firmware version 20.34.1012 does not match image firmware version 20.35.1012
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_fw
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_fw ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512 ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file ... ok
+   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
     return _proxy.query(name, rdtype, raise_on_no_answer=raises,
@@ -4217,7 +3524,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4c023c8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4dcd870>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -4235,7 +3542,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c023c8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4dcd870>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -4254,27 +3561,14 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c023c8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
-ok
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4dcd870>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-   ERROR [ironic_python_agent.netutils] Socket for network interface eth0 said that it was ready to read we were unable to read from the socket while trying to get LLDP packet. Skipping this network interface.
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 197, in _get_lldp_info
-    lldp_info[interface[0]] = _receive_lldp_packets(s)
-                              ~~~~~~~~~~~~~~~~~~~~~^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 160, in _receive_lldp_packets
-    pkt = sock.recv(1600)
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-OSError: BOOM
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5 ... ok
    ERROR [root] Command failed: prepare_image, error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -4293,27 +3587,102 @@
         "Don't call ironic_lib.utils.execute() / "
         "processutils.execute() or similar functions in tests!")
 Exception: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists_no_match
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists_no_match ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets ... ok
-   ERROR [ironic_python_agent.netutils] Failed to open all RawPromiscuousSockets, attempting to close any opened sockets.
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields ... ok
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error ... ok
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed ... ok
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv ... ok
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled ... ok
+   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None.
+ WARNING [ironic_python_agent.extensions.image] Unable to umount vfat partitions. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/dev. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/proc. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/run. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/sys. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises ... ok
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device ... ok
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step ... ok
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5 ... ok
+   ERROR [root] Encountered issue attempting to validate the supplied configuration drive. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpcouly7tn/tmpirk4uf2r, error: [Errno 21] Is a directory: '/tmp/tmpcouly7tn/tmpirk4uf2r'
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name ... ok
+ WARNING [ironic_python_agent.extensions.standby] Failed to call get_disk_identifier: Unable to obtain the root_uuid parameter: The hexdump tool may be missing in IPA: 
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition ... ok
+   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -4385,7 +3754,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4ba5df0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4dcd870>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -4403,7 +3772,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ba5df0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4dcd870>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -4422,74 +3791,123 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ba5df0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4dcd870>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_agent_token
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_agent_token ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6 ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4 ... ok
- WARNING [ironic_python_agent.extensions.standby] Failed to call get_disk_identifier: Unable to obtain the root_uuid parameter: The hexdump tool may be missing in IPA: 
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6 ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4 WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
- ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_invalid
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_invalid ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false ... ok
- WARNING [ironic_python_agent.extensions.image] efibootmgr is not available in the ramdisk
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error 
-   ERROR [root] Command failed: install_bootloader, error: 
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired ... ok
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmp3zvmqxzg/tmpurnwjeln, error: [Errno 21] Is a directory: '/tmp/tmp3zvmqxzg/tmpurnwjeln'
+   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success ... ok
+   ERROR [root] Unexpected exception performing clean step erase_devices. RuntimeError: boom
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+RuntimeError: boom
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success ... ok
+   ERROR [root] Command failed: execute_clean_step, error: Clean step failed: Unexpected exception performing clean step erase_devices. RuntimeError: boom
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+RuntimeError: boom
+
+During handling of the above exception, another exception occurred:
+
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
-    _install_grub2(device,
-    ~~~~~~~~~~~~~~^^^^^^^^
-                   root_uuid=root_uuid,
-                   ^^^^^^^^^^^^^^^^^^^^
-                   efi_system_part_uuid=efi_system_part_uuid,
-                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-                   prep_boot_part_uuid=prep_boot_part_uuid,
-                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-                   target_boot_mode=target_boot_mode)
-                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 167, in _install_grub2
-    root_partition = partition_utils.get_partition(device, uuid=root_uuid)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/partition_utils.py", line 615, in get_partition
-    ipa_utils.rescan_device(device)
-    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 921, in rescan_device
-    execute('partx', '-av', device, attempts=3, delay_on_retry=True)
-    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 77, in execute
-    return ironic_utils.execute(*cmd, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in do_not_call
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 88, in execute_clean_step
+    raise errors.CleaningError(msg)
+ironic_python_agent.errors.CleaningError: Clean step failed: Unexpected exception performing clean step erase_devices. RuntimeError: boom
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256 ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok ... ok
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpzkv0bheg/tmppjpd2wwe, error: [Errno 21] Is a directory: '/tmp/tmpzkv0bheg/tmppjpd2wwe'
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpzkv0bheg/tmpaitf8rju, error: [Errno 21] Is a directory: '/tmp/tmpzkv0bheg/tmpaitf8rju'
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512 ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second ... ok
+   ERROR [root] Error performing clean step erase_devices
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
   File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
     return self._mock_call(*args, **kwargs)
            ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
@@ -4498,9 +3916,146 @@
            ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
     raise effect
-FileNotFoundError
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported ... ok
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger
+ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success ... ok
+   ERROR [root] Command failed: execute_clean_step, error: Block device caused unknown error: I'm a teapot
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+                                           **kwargs)
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error ... ok
+   ERROR [root] We were unable to make a new filesystem for the configuration drive. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpjfpf34ec/tmp9d3n73u2, error: [Errno 21] Is a directory: '/tmp/tmpjfpf34ec/tmp9d3n73u2'
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpjfpf34ec/tmpk7oklv7a, error: [Errno 21] Is a directory: '/tmp/tmpjfpf34ec/tmpk7oklv7a'
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry ... ok
+   ERROR [root] Malformed clean_step, no "step" key: {}
+   ERROR [root] Command failed: execute_clean_step, error: Malformed clean_step, no "step" key: {}
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 74, in execute_clean_step
+    raise ValueError(msg)
+ValueError: Malformed clean_step, no "step" key: {}
+ WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: 'fake'
+ WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: 'fake'
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip ... ok
+ WARNING [root] We were unable to examine the configuration drive, bypassing. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5 ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed ... ok
+ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls
+ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -4572,7 +4127,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf49a49d0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4d053a0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -4590,7 +4145,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf49a49d0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4d053a0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -4609,58 +4164,495 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf49a49d0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4d053a0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_listen_host_port
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_listen_host_port ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1 ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults ... ok
-   ERROR [ironic_python_agent.disk_utils] Security: Unable to safety check image
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2 ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data ... ok
-   ERROR [ironic_python_agent.disk_utils] Security: Image failed safety check
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error ... ok
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3 ... ok
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6 ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch ... ok
+   ERROR [root] Clean version mismatch for command execute_clean_step
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching
+ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096 ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0 ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6 ... ok
+ WARNING [ironic_python_agent.disk_utils] Unable to probe for partitions on device /dev/fake, the partitioning table may be broken. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/md/esp using the install command which does not place Secure Boot signed binaries.
+ WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
+Command: grub2-install
+Exit code: 1
+Stdout: ''
+Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
+ WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
+Command: grub2-install
+Exit code: 1
+Stdout: ''
+Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none ... ok
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate ... ok
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6 ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4 ... ok
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success ... ok
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts ... ok
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct_gpt_nvme
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct_gpt_nvme ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success ... ok
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect_gpt
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect_gpt ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all ... ok
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only ... ok
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger ... ok
+   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf4c62430>: A problem was encountered
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3512, in dispatch_to_managers
+    return getattr(manager, method)(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
+    return fn(self, *args, **kwargs)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
+    raise RuntimeError('A problem was encountered')
+RuntimeError: A problem was encountered
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev ... ok
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep ... ok
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other ... ok
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http ... ok
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name ... ok
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part ... ok
+ WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists ... ok
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception ... ok
+   ERROR [root] Command failed: run_image, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1043, in _run_shutdown_command
+    utils.execute("echo b > /proc/sysrq-trigger", shell=True)
+    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in execute
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1051, in run_image
+    self._run_shutdown_command('reboot')
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1045, in _run_shutdown_command
+    raise errors.SystemRebootError(e.exit_code, e.stdout, e.stderr)
+ironic_python_agent.errors.SystemRebootError: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command ... ok
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled ... ok
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom ... ok
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url ... ok
+ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute
+ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute ... ok
+ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering
+ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2 ... skipped 'mkisofs not installed'
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location ... ok
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files ... ok
+ WARNING [root] Can't find field vendor for device lo in device class net
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large ... ok
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme ... ok
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia ... ok
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off ... ok
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override ... ok
+ WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override ... ok
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl ... ok
+ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys
+ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum ... ok
+   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
     return _proxy.query(name, rdtype, raise_on_no_answer=raises,
@@ -4731,7 +4723,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4ba5df0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4c10920>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -4749,7 +4741,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ba5df0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c10920>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -4768,118 +4760,361 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ba5df0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
- ... ok
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c10920>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660 ... skipped 'mkisofs not installed'
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_decode_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_decode_exception ... ok
- WARNING [ironic_python_agent.ironic_api_client] Connection error when accessing 2001:db8::1/v1/heartbeat/meow, trying the next URL. Error: 
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf ... skipped 'mkisofs not installed'
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_agent_token
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_agent_token ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2 ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw ... ok
+ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute
+ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2 ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_listen_host_port
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_listen_host_port ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail ... ok
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition ... ok
+ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives
+ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives ... ok
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image ... ok
+ WARNING [ironic_python_agent.extensions.standby] poweroff command failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: ''
+Stderr: None, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_raise_keyboard_interrupt
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_raise_keyboard_interrupt ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_netutils_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_netutils_exception ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device ... ok
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch ... ok
 ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_and_stream_false
 ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_and_stream_false ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node ... ok
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt ... ok
 ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_stream_true
 ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_stream_true ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries ... ok
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting ... ok
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures ... ok
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
- WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
- WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None, falling back to sysrq-trigger
-   ERROR [root] Command failed: run_image, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty ... ok
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found
+ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok ... ok
+ WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
+ WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
+ WARNING [ironic_python_agent.extensions.standby] reboot command has been ignored, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false ... ok
+   ERROR [ironic_lib.exception] Exception in string format operation (arguments )
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1043, in _run_shutdown_command
-    utils.execute("echo b > /proc/sysrq-trigger", shell=True)
-    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in execute
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
+  File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
+    message = self._msg_fmt % kwargs
+              ~~~~~~~~~~~~~~^~~~~~~~
+KeyError: 'service'
+ WARNING [ironic_python_agent.agent] Could not get baremetal endpoint from mDNS, will not heartbeat
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2 ... ok
+ WARNING [root] Can't find field vendor for device lo in device class net
+ WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
+ WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 7: 0b0/0b0
+ WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 0: 0b0/0b1111
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection_without_apiurl
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection_without_apiurl ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid ... ok
+   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
-Stderr: None
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1051, in run_image
-    self._run_shutdown_command('reboot')
-    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1045, in _run_shutdown_command
-    raise errors.SystemRebootError(e.exit_code, e.stdout, e.stderr)
-ironic_python_agent.errors.SystemRebootError: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
- WARNING [root] Can't find field vendor for device lo in device class net
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5 ... ok
+Stdout: 'error'
+Stderr: None.
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting ... ok
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -4951,7 +5186,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4aaf190>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4b8cd40>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -4969,7 +5204,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4aaf190>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4b8cd40>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -4988,64 +5223,39 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4aaf190>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4b8cd40>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete ... ok
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
- WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
- WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None, falling back to sysrq-trigger
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6 ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_sleep
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_sleep ... ok
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed ... ok
 ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_exists
 ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_exists ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
+ WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab ... ok
 ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt
 ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config ... ok
- WARNING [ironic_python_agent.extensions.standby] poweroff command failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: ''
-Stderr: None, falling back to sysrq-trigger
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists ... ok
- WARNING [ironic_python_agent.extensions.standby] reboot command has been ignored, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_ssl
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_ssl ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe ... ok
    ERROR [ironic_lib.exception] Exception in string format operation (arguments )
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
@@ -5053,72 +5263,30 @@
               ~~~~~~~~~~~~~~^~~~~~~~
 KeyError: 'service'
  WARNING [ironic_python_agent.agent] Could not get baremetal endpoint from mDNS, will not heartbeat
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat ... ok
  WARNING [root] Can't find field vendor for device lo in device class net
+   ERROR [ironic_python_agent.agent] Neither ipa-api-url nor inspection_callback_urlfound, please check your pxe append parameters.
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection_without_apiurl
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection_without_apiurl ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2 ... ok
- WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 7: 0b0/0b0
- WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 0: 0b0/0b1111
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url ... ok
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
- WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
- WARNING [root] Can't find field vendor for device sda in device class block
- WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6 ... ok
- WARNING [root] Can't find field vendor for device sdb in device class block
- WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
- WARNING [root] Can't find field vendor for device md0 in device class block
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_without_inspection_and_apiurl
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_without_inspection_and_apiurl ... ok
+ WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
+ WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
+ WARNING [ironic_python_agent.extensions.image] Failed to copy grubenv file. Error: copy failed
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails ... ok
+   ERROR [root] Failed to create config drive on disk /dev/fake for node 12345678-1234-1234-1234-1234567890abcxyz. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -5190,7 +5358,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4aaf190>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4c103a0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -5208,7 +5376,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4aaf190>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c103a0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -5227,124 +5395,18 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4aaf190>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
- WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_sleep
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_sleep ... ok
-   ERROR [root] Failed to create config drive on disk /dev/fake for node 12345678-1234-1234-1234-1234567890abcxyz. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony ... ok
-   ERROR [ironic_python_agent.utils] Failed to sync time using chrony to ntp server: 192.168.1.1: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: 'time verboten'
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure ... ok
-   ERROR [ironic_python_agent.utils] Unable to sync clock, available methods of 'ntpdate' or 'chrony' not found.
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found
-ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints ... ok
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_ssl
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_ssl ... ok
-   ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception ... ok
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info ... ok
-   ERROR [ironic_python_agent.utils] foo
-   ERROR [ironic_python_agent.utils] bar
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true ... ok
-   ERROR [ironic_python_agent.utils] baz
-   ERROR [ironic_python_agent.utils] foo
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none ... ok
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error ... ok
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0 ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5 ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device ... ok
-   ERROR [ironic_lib.exception] Exception in string format operation (arguments )
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
-    message = self._msg_fmt % kwargs
-              ~~~~~~~~~~~~~~^~~~~~~~
-KeyError: 'service'
- WARNING [ironic_python_agent.agent] Could not get baremetal endpoint from mDNS, will not heartbeat
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6 ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info ... ok
- WARNING [root] Can't find field vendor for device lo in device class net
-   ERROR [ironic_python_agent.agent] Neither ipa-api-url nor inspection_callback_urlfound, please check your pxe append parameters.
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c103a0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_without_inspection_and_apiurl
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_without_inspection_and_apiurl ... ok
- WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match ... ok
- WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks ... ok
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_by_default
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_by_default ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -5416,7 +5478,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf49a4500>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4d05f50>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -5434,7 +5496,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf49a4500>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4d05f50>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -5453,36 +5515,163 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf49a4500>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4d05f50>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_by_default
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_by_default ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_explicitly
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_explicitly ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2 ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status ... ok
+   ERROR [ironic_python_agent.burnin] SMART test on /dev/sdj failed with 'string'
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'error'
+Stderr: None.
+   ERROR [ironic_python_agent.extensions.image] Umounting efi system partition failed. Attempted 3 times. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'error'
+Stderr: None
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded ... ok
+   ERROR [ironic_python_agent.burnin] fio (disk) failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ WARNING [ironic_python_agent.extensions.image] efibootmgr is not available in the ramdisk
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error 
+   ERROR [root] Command failed: install_bootloader, error: 
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
+    _install_grub2(device,
+    ~~~~~~~~~~~~~~^^^^^^^^
+                   root_uuid=root_uuid,
+                   ^^^^^^^^^^^^^^^^^^^^
+                   efi_system_part_uuid=efi_system_part_uuid,
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                   prep_boot_part_uuid=prep_boot_part_uuid,
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                   target_boot_mode=target_boot_mode)
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 167, in _install_grub2
+    root_partition = partition_utils.get_partition(device, uuid=root_uuid)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/partition_utils.py", line 615, in get_partition
+    ipa_utils.rescan_device(device)
+    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 921, in rescan_device
+    execute('partx', '-av', device, attempts=3, delay_on_retry=True)
+    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 77, in execute
+    return ironic_utils.execute(*cmd, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in do_not_call
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+FileNotFoundError
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs
+ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing ... ok
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success ... ok
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success ... ok
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md1. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type ... ok
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run ... ok
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries ... ok
+   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -5554,7 +5743,7 @@
                        ~~~~~~~~~~~~~~^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4950b30>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf49cf030>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -5572,7 +5761,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4950b30>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf49cf030>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -5591,18 +5780,116 @@
     r = adapter.send(request, **kwargs)
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4950b30>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf49cf030>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_explicitly
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_explicitly ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found ... ok
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia
+ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device ... ok
+ WARNING [root] Could not determine if /dev/sdfake is aread-only device. Error: 
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_false
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_false ... ok
+ WARNING [root] Could not determine if /dev/sdfake1 is aread-only device. Error: 
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_error
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_error ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_ok ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists_no_match
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists_no_match ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_invalid
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_invalid ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_decode_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_decode_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_netutils_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_netutils_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5 ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6 ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints ... ok
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
+ WARNING [root] Can't find field vendor for device sda in device class block
+ WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
+ WARNING [root] Can't find field vendor for device sdb in device class block
+ WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
+ WARNING [root] Can't find field vendor for device md0 in device class block
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5 ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6 ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list ... ok
+   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme ... ok
  WARNING [root] Failed to remove partitions on /dev/sda: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -5613,8 +5900,6 @@
 Exit code: -
 Stdout: 'No md superblock detected'
 Stderr: None
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration ... ok
    ERROR [root] Unable to clean all softraid correctly. Remaining ['/dev/md0']
@@ -5627,8 +5912,6 @@
  WARNING [root] Software RAID device /dev/md1 was not deleted
  WARNING [root] Holder disk /dev/sda contains logical disk on the skip list. Deleting just partitions: ['1']
  WARNING [root] Holder disk /dev/sdb contains logical disk on the skip list. Deleting just partitions: ['1']
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_skip_list ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_deploy_steps_exist
@@ -5639,12 +5922,8 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed ... ok
  WARNING [root] Failed to invoke secure erase, falling back to shred: Error erasing block device: An unknown error occurred erasing block device /dev/sda
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed_continued
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed_continued ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid ... ok
    ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: Block device /dev/sda is frozen and cannot be erased
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_frozen
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_frozen ... ok
@@ -5660,49 +5939,12 @@
  WARNING [root] Unable to execute `smartctl` utility: boom
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success_no_smartctl
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success_no_smartctl ... ok
-   ERROR [ironic_python_agent.agent] error sending heartbeat to <Mock name='mock.api_urls' id='4104650800'>
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/agent.py", line 148, in do_heartbeat
-    self.api.heartbeat(
-    ~~~~~~~~~~~~~~~~~~^
-        uuid=self.agent.get_node_uuid(),
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    ...<2 lines>...
-        generated_cert=self.agent.generated_cert,
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-    )
-    ^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
-    return self._mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
-    raise effect
-Exception: uh oh!
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nosecurity_shred
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nosecurity_shred ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_notsupported_shred
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_notsupported_shred ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_crypto_success
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_crypto_success ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_failed
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_failed ... ok
    ERROR [root] nvme-cli did not return any supported format modes for device: /dev/nvme0n1
@@ -5710,9 +5952,6 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_format_unsupported ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_userdata_success
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_userdata_success ... ok
-   ERROR [ironic_python_agent.utils] collector <Mock name='mock.name' id='4092694944'> failed: boom
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_0_pass_no_zeroize
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_0_pass_no_zeroize ... ok
    ERROR [root] Erasing block device /dev/sda failed with error 
@@ -5725,36 +5964,21 @@
 Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_processerror
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_processerror ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_uses_internal_info
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_uses_internal_info ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid ... ok
  WARNING [root] Refusing to permit ATA Secure Erase as direct ATA commands via the `smartctl` utility with device /dev/sda do not succeed.
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_fails_security_fallback_to_shred
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_fails_security_fallback_to_shred ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_unsupported_shred
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_unsupported_shred ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_virtual_media
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_virtual_media ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency ... ok
-   ERROR [ironic_python_agent.utils] boom
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency_pool_size
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency_pool_size ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express_stops_on_safety_failure
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express_stops_on_safety_failure ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata
@@ -5766,29 +5990,10 @@
 Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_error
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_error ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_safety_check
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_safety_check ... ok
-   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url ... ok
- WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure ... ok
- WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs ... ok
- WARNING [ironic_python_agent.numa_inspector] Failed to get list of NUMA nodes, NUMA node path does not exist: /sys/devices/system/node/
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success ... ok
-ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives
-ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default_protected_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default_protected_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_without_disk
@@ -5797,78 +6002,22 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_pstore ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_ok ... ok
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls ... ok
  WARNING [root] Executable 'biosdevname' not found
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_oserror
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_oserror ... ok
-ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute
-ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions ... ok
-   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 2 times.
-   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 3 times.
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works ... ok
- WARNING [ironic_python_agent.dmi_inspector] Failed to parse Handle type in dmi output: list index out of range
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_process_exec_err3
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_process_exec_err3 ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data ... ok
-   ERROR [ironic_python_agent.utils] failed to run dmidecode: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_process_exec_err4
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_process_exec_err4 ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu ... ok
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_invalid
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_invalid ... ok
- WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Handle'
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle ... ok
- WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Number Of Devices'
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices ... ok
  WARNING [root] Invalid IP address meow: 'meow' does not appear to be an IPv4 or IPv6 address
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_iterate_channels
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_iterate_channels ... ok
- WARNING [ironic_python_agent.efi_utils] Invalid sgdisk line: I am a teaport
- WARNING [ironic_python_agent.efi_utils] No UUID information provided in sgdisk output for partition 1 on device /dev/fake
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_no_ipmi_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_no_ipmi_device ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok ... ok
  WARNING [root] Invalid IP address : '' does not appear to be an IPv4 or IPv6 address
  WARNING [root] Invalid IP address : '' does not appear to be an IPv4 or IPv6 address
  WARNING [root] Invalid IP address : '' does not appear to be an IPv4 or IPv6 address
@@ -5880,12 +6029,8 @@
  WARNING [root] Invalid IP address : '' does not appear to be an IPv4 or IPv6 address
  WARNING [root] Invalid IP address : '' does not appear to be an IPv4 or IPv6 address
  WARNING [root] Invalid IP address : '' does not appear to be an IPv4 or IPv6 address
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_not_available
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_not_available ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_random_error
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_random_error ... ok
  WARNING [root] Cannot get BMC address: Unexpected error while running command.
@@ -5895,29 +6040,17 @@
 Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_virt
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_virt ... ok
- WARNING [root] No hardware manager was able to handle interface foobar
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_zeroed
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_address_zeroed ... ok
- WARNING [root] Cannot find detailed information about interface eth0
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_invalid
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_invalid ... ok
- WARNING [root] Cannot find detailed information about interface eth0
  WARNING [root] Invalid ipmitool output meow
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_iterate_channels
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_iterate_channels ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_no_ipmi_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_no_ipmi_device ... ok
- WARNING [root] Cannot find detailed information about interface bond0
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond ... ok
  WARNING [root] Invalid ipmitool output 
  WARNING [root] Invalid ipmitool output 
  WARNING [root] Invalid ipmitool output 
@@ -5931,11 +6064,8 @@
  WARNING [root] Invalid ipmitool output 
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_not_available
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_not_available ... ok
- WARNING [root] Cannot find detailed information about interface eth0
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_random_error
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_random_error ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp ... ok
  WARNING [root] Cannot get BMC MAC address: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -5943,93 +6073,39 @@
 Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_virt
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_virt ... ok
- WARNING [root] Cannot find detailed information about interface eth0
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_zeroed
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_mac_zeroed ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_channel_7
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_channel_7 ... ok
- WARNING [root] Cannot find detailed information about interface eth0
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_dynamic_address
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_dynamic_address ... ok
- WARNING [root] Cannot find detailed information about interface eth0
- WARNING [root] Cannot find detailed information about interface eth0.100
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_invalid_enables
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_invalid_enables ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_invalid_get_address
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_invalid_get_address ... ok
- WARNING [root] Cannot find detailed information about interface eth0
- WARNING [root] Cannot find detailed information about interface eth0.100
- WARNING [root] Cannot find detailed information about interface eth0.101
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp ... ok
- WARNING [root] Cannot find detailed information about interface eth0
- WARNING [root] Cannot find detailed information about interface eth1
- WARNING [root] Cannot find detailed information about interface eth0.100
- WARNING [root] Cannot find detailed information about interface eth0.101
- WARNING [root] Cannot find detailed information about interface eth1.102
- WARNING [root] Cannot find detailed information about interface eth1.103
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_ipmitool_invalid_stdout_format
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_ipmitool_invalid_stdout_format ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_no_ipmi_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_no_ipmi_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_not_enabled
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_not_enabled ... ok
- WARNING [root] Cannot find detailed information about interface eth0
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int ... ok
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_static_address_both
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_static_address_both ... ok
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only ... ok
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled WARNING [root] Cannot get BMC v6 address: Unexpected error while running command.
+ WARNING [root] Cannot get BMC v6 address: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_virt
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_virt ... ok
-ironic-python-agent: Copying configuration from /tmp/tmpvatavze2/etc/ironic-python-agent to /etc/ironic-python-agent
-ironic-python-agent: Copying configuration from /tmp/tmpvatavze2/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_bios
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_bios ... ok
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy ... ok
-ironic-python-agent: Copying configuration from /tmp/tmp1psqfgtb/etc/ironic-python-agent to /etc/ironic-python-agent
-ironic-python-agent: Copying configuration from /tmp/tmp1psqfgtb/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_pxe_interface
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_pxe_interface ... ok
-ironic-python-agent: /some/path/etc/ironic-python-agent not found
-ironic-python-agent: /some/path/etc/ironic-python-agent.d not found
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_uefi
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_uefi ... ok
-ironic-python-agent: /tmp/tmpmvlnwm1h/etc/ironic-python-agent not found
-ironic-python-agent: /tmp/tmpmvlnwm1h/etc/ironic-python-agent.d not found
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_clean_steps
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_clean_steps ... ok
-ironic-python-agent: No virtual media device detected
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia ... ok
-ironic-python-agent: Cannot use configuration from virtual media as the agent was not booted from virtual media.
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_component_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_component_devices ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_illegal_flags
@@ -6063,8 +6139,6 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_lshw_list ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_bank_size
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_bank_size ... ok
-   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
    ERROR [root] Cannot fetch total memory size using psutil version 5
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 1648, in get_memory
@@ -6115,7 +6189,7 @@
  WARNING [root] Can't find field vendor for device dm-0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device ... ok
- WARNING [root] Using hint {'vendor': 'basic vendor'} skipping devices: /dev/sdb,/dev/sda
+ WARNING [root] Using hint {'vendor': 'basic vendor'} skipping devices: /dev/sda,/dev/sdb
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_complete_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_complete_skip_list ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
@@ -6166,52 +6240,168 @@
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_raid
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_raid ... ok
+   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_by_path
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_by_path ... ok
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync ... ok
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_iinfo
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_iinfo ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_model
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_model ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_name
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_name ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user ... ok
+   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently algo-beyond-milky-way) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used ... ok
+   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure ... ok
+   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-sha512-value; verification checksum: invalid-checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields ... ok
+   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently unsupported-algorithm) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback ... ok
  WARNING [ironic_lib.utils] No device found that matches the root device hints {'model': 'fastable sd131 7', 'wwn': 'fake-wwn', 'serial': 'fake-serial', 'vendor': 'fake-vendor', 'size': 10}
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_no_device_found
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_no_device_found ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5 ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_rotational
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_rotational ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_serial
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_serial ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size ... ok
+   ERROR [ironic_lib.exception] Exception in string format operation (arguments )
+Traceback (most recent call last):
+  File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
+    message = self._msg_fmt % kwargs
+              ~~~~~~~~~~~~~~^~~~~~~~
+KeyError: 'reason'
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_not_int
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_not_int ... ok
+   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_str
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_str ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception ... ok
  WARNING [root] Using hint {'vendor': 'fake-vendor'} skipping devices: /dev/sdb
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb ... ok
+   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid ... ok
+   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi ... ok
  WARNING [ironic_lib.utils] No device found that matches the root device hints {'wwn': 'fake-wwn'}
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_skip_list ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_vendor
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_vendor ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_wwn
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_wwn ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_skip_list_non_exist
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_skip_list_non_exist ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_just_raids
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_just_raids ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_no_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_no_skip_list ... ok
  WARNING [root] Using hint {'name': '/dev/sdj'} skipping devices: /dev/sdj
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_with_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_with_skip_list ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token ... ok
  WARNING [root] Could not retrieve vendor info from lshw: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -6221,10 +6411,16 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_failure ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_lshw_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_lshw_list ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_usb_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_usb_devices ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_ipmi_device_exists
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_ipmi_device_exists ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: 
  WARNING [root] Device /dev/sdb is not supported by pyudev, skipping... Error: No block device with number 1234
  WARNING [root] Device /dev/sdc is inaccessible, skipping... Error: 
@@ -6232,69 +6428,63 @@
  WARNING [root] Device /dev/dm-0 is inaccessible, skipping... Error: 
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results ... ok
  WARNING [root] We have identified a multipath device sdd, this is being ignored in favor of dm-0 and its related child devices.
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_all_serial
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_all_serial ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: 
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_hctl_fail
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_hctl_fail ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_only_udev
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_only_udev ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region ... ok
  WARNING [root] We have identified a multipath device sdd, this is being ignored in favor of dm-0 and its related child devices.
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_udev
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_udev ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_no_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_no_skip_list ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd ... ok
  WARNING [root] Using hint {'name': '/dev/sdj'} skipping devices: /dev/sdj
  WARNING [root] Using hint {'name': '/dev/hdaa'} skipping devices: /dev/hdaa
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_complete_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_complete_skip_list ... ok
-   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout ... ok
  WARNING [root] Using hint {'name': '/dev/sdj'} skipping devices: /dev/sdj
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_skip_list ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_skip_list_non_exist
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_skip_list_non_exist ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_including_partitions
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_including_partitions ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync ... ok
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_hardware_info
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_hardware_info ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum ... ok
+   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_normal_vs_enhanced_security_erase
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_normal_vs_enhanced_security_erase ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_service_steps_exist
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_service_steps_exist ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
@@ -6305,11 +6495,9 @@
  WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
  WARNING [root] Can't find field vendor for device md0 in device class block
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls ... ok
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_MAX_MAX
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_MAX_MAX ... ok
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
  WARNING [root] Can't find field vendor for device sda in device class block
@@ -6321,14 +6509,13 @@
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_duplicate_volume_name
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_duplicate_volume_name ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled ... ok
+   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_no_of_raids
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_no_of_raids ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
@@ -6336,27 +6523,25 @@
  WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
  WARNING [root] Can't find field vendor for device sdb in device class block
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit ... ok
  WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_raid_level
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_raid_level ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_no_configuration
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_no_configuration ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256 ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
  WARNING [root] Can't find field vendor for device sda in device class block
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success ... ok
  WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
  WARNING [root] Can't find field vendor for device sdb in device class block
@@ -6365,234 +6550,57 @@
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1_raidN
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1_raidN ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5 ... ok
 ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_safe
 ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_safe ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number ... ok
 ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_unsafe
 ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_unsafe ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi ... ok
-   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently algo-beyond-milky-way) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info ... ok
-   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str ... ok
-   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-sha512-value; verification checksum: invalid-checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str ... ok
-   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently unsupported-algorithm) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5 ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_dict
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_dict ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_json_string
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_json_string ... ok
- WARNING [ironic_python_agent.utils] Ignoring malformed capability 'test:world:2'. Format should be 'key:val'.
- WARNING [ironic_python_agent.utils] Ignoring malformed capability 'badformat'. Format should be 'key:val'.
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_old_format_caps
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_old_format_caps ... ok
-   ERROR [ironic_lib.exception] Exception in string format operation (arguments )
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
-    message = self._msg_fmt % kwargs
-              ~~~~~~~~~~~~~~^~~~~~~~
-KeyError: 'reason'
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_command_output
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_command_output ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output ... ok
-   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_ssl_client_options
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_ssl_client_options ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small ... ok
-   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_primary_sort
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_primary_sort ... ok
-   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_secondary_sort
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_secondary_sort ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_disk_label
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_disk_label ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label ... ok
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable ... ok
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector ... ok
-   ERROR [root] Encountered issue attempting to validate the supplied configuration drive. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpsothhhec/tmpcc7euo79, error: [Errno 21] Is a directory: '/tmp/tmpsothhhec/tmpcc7euo79'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed ... ok
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmp3txn611k/tmpwdntdnhg, error: [Errno 21] Is a directory: '/tmp/tmp3txn611k/tmpwdntdnhg'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work ... ok
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmphsfrdmav/tmp9teen08t, error: [Errno 21] Is a directory: '/tmp/tmphsfrdmav/tmp9teen08t'
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmphsfrdmav/tmpp6_yf18o, error: [Errno 21] Is a directory: '/tmp/tmphsfrdmav/tmpp6_yf18o'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive ... ok
-   ERROR [root] We were unable to make a new filesystem for the configuration drive. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmp881j4fb4/tmp4ndwh9mx, error: [Errno 21] Is a directory: '/tmp/tmp881j4fb4/tmp4ndwh9mx'
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmp881j4fb4/tmpevj2hy94, error: [Errno 21] Is a directory: '/tmp/tmp881j4fb4/tmpevj2hy94'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid ... ok
- WARNING [root] We were unable to examine the configuration drive, bypassing. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled ... ok
-ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute
-ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path ... ok
+POST: /v1/commands {'name': 'do_things', 'params': []}
+GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
+POST: /v1/commands {'name': 'do_things', 'params': {'key': 'value'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands?wait=false {'name': 'do_things', 'params': {'key': 'value'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands?wait=true {'name': 'do_things', 'params': {'key': 'value'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands {}
+GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
+POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
+GOT:<WrapperTestResponse streamed [401 UNAUTHORIZED]>
+GET: /v1/status None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1/commands/abc123 None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1/commands None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1/foo None
+GOT:<WrapperTestResponse streamed [404 NOT FOUND]>
+GET: / None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1 None
+GOT:<WrapperTestResponse streamed [200 OK]>
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx_invalid ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk ... ok
+5+0 records in
+5+0 records out
+5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0192412 s, 272 MB/s
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error ... ok
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout ... ok
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_defaults
@@ -6633,8 +6641,6 @@
 Stderr: None
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_loop
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_loop ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error ... ok
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_w_logfile
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_w_logfile ... ok
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_unknown_role
@@ -6665,72 +6671,16 @@
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_no_stress_ng ... ok
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_non_default
 ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_non_default ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test ... ok
- WARNING [ironic_python_agent.inspector] failed to get system journal
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found ... ok
-   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf49cc9b0>: A problem was encountered
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3468, in dispatch_to_all_managers
-    response = getattr(manager, method)(*args, **kwargs)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
-    return fn(self, *args, **kwargs)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
-    raise RuntimeError('A problem was encountered')
-RuntimeError: A problem was encountered
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found ... ok
-   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf4aa7330>: A problem was encountered
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3512, in dispatch_to_managers
-    return getattr(manager, method)(*args, **kwargs)
-           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
-    return fn(self, *args, **kwargs)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
-    raise RuntimeError('A problem was encountered')
-RuntimeError: A problem was encountered
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails ... ok
-ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering
-ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid ... ok
-ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys
-ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders ... ok
 ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed
 ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed ... ok
  WARNING [ironic_python_agent.inspector] Connection error when accessing url1, trying the next URL. Error: 
@@ -6745,55 +6695,178 @@
  WARNING [ironic_python_agent.inspector] Connection error when accessing http://url1/v1/continue_inspection, trying the next URL. Error: 
 ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_several_api_urls
 ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_several_api_urls ... ok
- WARNING [ironic_python_agent.inspector] Failed to gather vendor id, product id or pci class from PCI device bar: 
- WARNING [ironic_python_agent.inspector] Wrong format of vendor id, product id or pci class in PCI device baz: 
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success ... ok
- WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device foo: 
- WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device bar: 
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror ... ok
-   ERROR [ironic_python_agent.utils] Failed to get list of PCI devices: 
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path ... ok
 ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_correct_mac
 ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_correct_mac ... ok
 ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_pxelinux_mac
 ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_pxelinux_mac ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx_invalid ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk ... ok
-5+0 records in
-5+0 records out
-5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0374823 s, 140 MB/s
-5+0 records in
-5+0 records out
-5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0335976 s, 156 MB/s
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set ... ok
+   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 130, in _get_ironic_api_version
+    response = self._request('GET', '/')
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 90, in _request
+    resp = self.session.request(method,
+                                request_url,
+    ...<4 lines>...
+                                timeout=CONF.http_request_timeout,
+                                **kwargs)
+  File "<string>", line 3, in request
+  File "/usr/lib/python3.13/unittest/mock.py", line 1167, in __call__
+    return self._mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1171, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.13/unittest/mock.py", line 1226, in _execute_mock_call
+    raise effect
+Exception: Boom
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'node_node': 'also_not_node'}
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Failed looking up node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' at http://agent-api.ironic.example.org. Check if inspection has completed? Error 400: {"node": {"uuid": "deadbeef-dabb-ad00-b105-f00d00bab10c"}}
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'heartbeat_timeout': 300}
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Got invalid heartbeat from the API: {'node': {'uuid': 'deadbeef-dabb-ad00-b105-f00d00bab10c'}}
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4 ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6 ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1 ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2 ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3 ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Connection error when accessing 2001:db8::1/v1/heartbeat/meow, trying the next URL. Error: 
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6 ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_dict
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_dict ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_json_string
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_json_string ... ok
+ WARNING [ironic_python_agent.utils] Ignoring malformed capability 'test:world:2'. Format should be 'key:val'.
+ WARNING [ironic_python_agent.utils] Ignoring malformed capability 'badformat'. Format should be 'key:val'.
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_old_format_caps
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_old_format_caps ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_command_output
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_command_output ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_ssl_client_options
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_ssl_client_options ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_primary_sort
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_primary_sort ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_secondary_sort
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_secondary_sort ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_disk_label
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_disk_label ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label ... ok
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit ... ok
+5+0 records in
+5+0 records out
+5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0190775 s, 275 MB/s
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized ... ok
    ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: Wrong descriptor location
@@ -6817,150 +6890,151 @@
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_invalid_type ... ok
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_stream_optimized
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_stream_optimized ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running ... ok
- WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'lacking kernel support'
-Stderr: None
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support ... ok
- WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: 
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath ... ok
- WARNING [root] Attempted to determine if multipath tools were present. Not detected. Error recorded: 
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test ... ok
-   ERROR [root] Finding the partition with UUID 11111111-2222-3333-4444-555555555555 on device /dev/fake failed with Unexpected error while running command.
+ WARNING [root] No hardware manager was able to handle interface foobar
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname ... ok
+ WARNING [root] Cannot find detailed information about interface bond0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ WARNING [root] Cannot find detailed information about interface eth0.100
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ WARNING [root] Cannot find detailed information about interface eth0.100
+ WARNING [root] Cannot find detailed information about interface eth0.101
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ WARNING [root] Cannot find detailed information about interface eth1
+ WARNING [root] Cannot find detailed information about interface eth0.100
+ WARNING [root] Cannot find detailed information about interface eth0.101
+ WARNING [root] Cannot find detailed information about interface eth1.102
+ WARNING [root] Cannot find detailed information about interface eth1.103
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info ... ok
+ WARNING [ironic_python_agent.inspector] no suitable root device detected
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony ... ok
+   ERROR [ironic_python_agent.utils] Failed to sync time using chrony to ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
-Stderr: None
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label ... ok
-   ERROR [root] No partition with UUID 11111111-2222-3333-4444-555555555555 found on device /dev/fake
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid ... ok
-/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:57: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc.
-  self.assertLess(cert.not_valid_before,
-/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:59: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc.
-  self.assertGreater(cert.not_valid_after,
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate ... ok
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate ... ok
-ironic-python-agent: Excluding device sda1 from virtual mediaconsideration as it is a partition.
-ironic-python-agent: Found possible vmedia candidate /dev/sda2, however the device failed vmedia validity checking.
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels ... ok
-ironic-python-agent: Was unable to execute the lsblk command. Unexpected error while running command.
+Stdout: None
+Stderr: 'time verboten'
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure ... ok
+   ERROR [ironic_python_agent.utils] Unable to sync clock, available methods of 'ntpdate' or 'chrony' not found.
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp ... ok
+   ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error ... ok
-ironic-python-agent: Did not identify any virtual media candidates devices.
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device ... ok
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: usb
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other ... ok
-ironic-python-agent: Excluding device sdh1 from virtual mediaconsideration as it is a partition.
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom ... ok
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: sata
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata ... ok
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: scsi
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi ... ok
-ironic-python-agent: Device sdh appears to not qualify as virtual due to the device size. Size: 1610612736000
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: usb
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none ... ok
 
 ----------------------------------------------------------------------
-Ran 1023 tests in 129.469s
+Ran 1023 tests in 37.116s
 
 OK (skipped=5)
 + stestr slowest
 Test id                                                                                                                            Runtime (s)
 ---------------------------------------------------------------------------------------------------------------------------------  -----------
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized      54.727
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit                       50.577
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx                                                 8.951
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries                                              4.014
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout   3.056
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st                                        3.038
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout                                         2.019
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error                                 2.017
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed                             2.013
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run                                                              1.221
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized      12.910
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit                       12.750
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx                                                 4.381
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries                                              4.012
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout   3.024
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st                                        3.011
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout                                         2.012
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error                                 2.008
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed                             2.007
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run                                                              1.047
 + rm -rf .stestr
-+ [ 3.12 = disabled ]
-+ echo 3.12
-+ cut -d. -f1
++ for pyvers in ${PYTHON3S}
++ '[' 3.12 = disabled ']'
+++ echo 3.12
+++ cut -d. -f1
 + PYMAJOR=3
-+ echo ===> Testing with python (python3)
++ echo '===> Testing with python (python3)'
 ===> Testing with python (python3)
-+ pwd
-+ [ -d /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages ]
-+ [ -z /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages ]
-+ [ -e .stestr.conf ]
-+ [ -x /usr/bin/python3-stestr ]
+++ pwd
++ '[' -d /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages ']'
++ '[' -z /build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages ']'
++ '[' -e .stestr.conf ']'
++ '[' -x /usr/bin/python3-stestr ']'
 + STESTR=stestr
 + rm -rf .stestr
-+ + subunit2pyunit
-PYTHON=python3.12 stestr run --parallel --subunit ironic_python_agent\.tests\.unit\.(?!test_inspector\.TestWaitForDhcp\.test_timeout)
- WARNING [root] Something went wrong when readlink for interface eth2. Error: fake
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver ... ok
++ PYTHON=python3.12
++ stestr run --parallel --subunit 'ironic_python_agent\.tests\.unit\.(?!test_inspector\.TestWaitForDhcp\.test_timeout)'
++ subunit2pyunit
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success ... ok
+   ERROR [ironic_python_agent.extensions.poll] Node lookup data can only be set when the Ironic Python Agent is running in standalone mode.
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone ... ok
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success
+ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success ... ok
+   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4106347408'>: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.dmi_inspector] Failed to parse Handle type in dmi output: list index out of range
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict ... ok
+   ERROR [ironic_python_agent.utils] failed to run dmidecode: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
 ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step
 ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector ... ok
    ERROR [root] Unexpected exception performing clean step erase_devices. RuntimeError: boom
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
@@ -6976,6 +7050,8 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
 RuntimeError: boom
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception ... ok
    ERROR [root] Command failed: execute_clean_step, error: Clean step failed: Unexpected exception performing clean step erase_devices. RuntimeError: boom
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
@@ -7001,6 +7077,35 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 88, in execute_clean_step
     raise errors.CleaningError(msg)
 ironic_python_agent.errors.CleaningError: Clean step failed: Unexpected exception performing clean step erase_devices. RuntimeError: boom
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data ... ok
+   ERROR [root] Duplicate componentFlavor MT_0000000540
+   ERROR [root] Failed to query tool configuration of device <Mock name='mock.dev_pci' id='4106349568'>: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [root] Invalid parameters for image {'url': 'http://10.10.10.10/firmware_images/fw2.bin', 'checksum': 'a94e683ea16d9ae44768f0a65942234c', 'checksumType': 'sha512', 'component': 'MT_0000000652', 'version': '24.34.1002'},please provide the following parameters url, checksum, checksumType, componentFlavor, version
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue ... ok
+   ERROR [root] Rescue Operation failed when writing the hashed rescue password to the password file. Error 
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/rescue.py", line 48, in write_rescue_password
+    with open(PASSWORD_FILE, 'w') as f:
+         ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+OSError
    ERROR [root] Error performing clean step erase_devices
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 77, in execute_clean_step
@@ -7016,6 +7121,7 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
 ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
    ERROR [root] Command failed: execute_clean_step, error: Block device caused unknown error: I'm a teapot
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -7034,30 +7140,25 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
 ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+ WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Handle'
+   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4106348704'>: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boop'
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Number Of Devices'
+ WARNING [root] Device /dev/fake1 is inaccessible, skipping... Error: nope
+   ERROR [root] Failed to set configuration of device <Mock name='mock.dev_pci' id='4107743928'>,  ['SRIOV_EN=20']: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [root] Finding the partition with UUID 11111111-2222-3333-4444-555555555555 on device /dev/fake failed with Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
 Stderr: None
-   ERROR [ironic_python_agent.extensions.poll] Node lookup data can only be set when the Ironic Python Agent is running in standalone mode.
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock ... ok
    ERROR [root] Malformed clean_step, no "step" key: {}
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders ... ok
    ERROR [root] Command failed: execute_clean_step, error: Malformed clean_step, no "step" key: {}
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
@@ -7066,136 +7167,17 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/clean.py", line 74, in execute_clean_step
     raise ValueError(msg)
 ValueError: Malformed clean_step, no "step" key: {}
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_get_hardware_info_success ... ok
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_not_standalone ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image ... ok
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success
-ironic_python_agent.tests.unit.extensions.test_poll.TestPollExtension.test_set_node_info_success ... ok
- WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNics.test_nvidia_nics ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios ... ok
-   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4106220408'>: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-   ERROR [root] Clean version mismatch for command execute_clean_step
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__get_device_conf_dict_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image ... ok
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__mstconfig_parse_data_no_data ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0003039836883544922 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps
-ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0003039836883544922 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_exception ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like ... ok
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.013727426528930664 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.013727426528930664 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.01766037940979004 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.01766037940979004 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.021664857864379883 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.021664857864379883 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.025728225708007812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.025728225708007812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.02965259552001953 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.02965259552001953 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03367948532104492 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03367948532104492 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03772139549255371 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03772139549255371 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Failed to query tool configuration of device <Mock name='mock.dev_pci' id='4106222544'>: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.041779279708862305 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.041779279708862305 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.04568982124328613 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.000213623046875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.000213623046875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- ... ok
-   ERROR [root] Duplicate componentFlavor MT_0000000540
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00590968132019043 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00590968132019043 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.009916543960571289 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.009916543960571289 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
-ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs
-ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.01390218734741211 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.01390218734741211 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.01790904998779297 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.01790904998779297 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool_exception
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_config_tool_exception ... ok
-   ERROR [root] Command failed: install_bootloader, error: meow
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
-    _install_grub2(device,
-  File "<string>", line 3, in _install_grub2
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
-OSError: meow
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.02191615104675293 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.02191615104675293 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.025932788848876953 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.025932788848876953 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.029893875122070312 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.029893875122070312 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03395342826843262 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03395342826843262 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03789806365966797 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Failed to query firmware of device <Mock name='mock.dev_pci' id='4106221776'>: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
+ WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
    ERROR [root] Unexpected exception performing deploy step erase_devices. RuntimeError: boom
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
@@ -7236,17 +7218,49 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 88, in execute_deploy_step
     raise errors.DeploymentError(msg)
 ironic_python_agent.errors.DeploymentError: Deploy step failed: Unexpected exception performing deploy step erase_devices. RuntimeError: boom
-   ERROR [root] Invalid parameters for image {'url': 'http://10.10.10.10/firmware_images/fw2.bin', 'checksum': 'a94e683ea16d9ae44768f0a65942234c', 'checksumType': 'sha512', 'component': 'MT_0000000652', 'version': '24.34.1002'},please provide the following parameters url, checksum, checksumType, componentFlavor, version
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00020742416381835938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00020742416381835938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.010349512100219727 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.010349512100219727 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.014285802841186523 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.014285802841186523 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Unexpected exception performing service step erase_devices. RuntimeError: boom
+   ERROR [ironic_python_agent.inspector] inspector url error 400: <MagicMock name='post().content.decode()' id='4108633456'>, proceeding with lookup
+   ERROR [root] Configuraiton ESWITCH_HAIRPIN_TOT_BUFFER_SIZE[8] for device <Mock name='mock.dev_pci' id='4113049664'> is not supported with current fw
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw ... ok
+   ERROR [root] Tried to execute fake.fake_sync_command, agent is still executing Command name: name, params: {}, status: RUNNING, result: None.
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw_exception ... ok
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password ... ok
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror
+ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal ... ok
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_fail ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders ... ok
+   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
+ WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
+ WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'lacking kernel support'
+Stderr: None
+   ERROR [root] Error performing deploy step erase_devices
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
     result = hardware.dispatch_to_managers(step['step'], node, ports,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<string>", line 3, in dispatch_to_managers
@@ -7258,12 +7272,13 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-RuntimeError: boom
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.01831793785095215 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.01831793785095215 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Command failed: execute_service_step, error: Service step failed: Unexpected exception performing service step erase_devices. RuntimeError: boom
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+   ERROR [root] Command failed: execute_deploy_step, error: Block device caused unknown error: I'm a teapot
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
     result = hardware.dispatch_to_managers(step['step'], node, ports,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<string>", line 3, in dispatch_to_managers
@@ -7275,45 +7290,24 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-RuntimeError: boom
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 88, in execute_service_step
-    raise errors.ServicingError(msg)
-ironic_python_agent.errors.ServicingError: Service step failed: Unexpected exception performing service step erase_devices. RuntimeError: boom
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.019533634185791016 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.019533634185791016 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.02234816551208496 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.02234816551208496 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.026311635971069336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.026311635971069336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256 ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test__param_supp_by_fw_exception ...  WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.030305862426757812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.030305862426757812 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ok
-   ERROR [root] Error performing deploy step erase_devices
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+   ERROR [root] No partition with UUID 11111111-2222-3333-4444-555555555555 found on device /dev/fake
+   ERROR [root] Configuraiton: UNSUPPORTED_PARAM is not supported by mstconfig, please update to the latest mstflint package.
+   ERROR [ironic_python_agent.burnin] SMART test on /dev/sdj failed with 'string'
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boop'
+Stderr: None
+ WARNING [ironic_python_agent.numa_inspector] Failed to get list of NUMA nodes, NUMA node path does not exist: /sys/devices/system/node/
+ WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: 
+   ERROR [root] Clean version mismatch for command execute_clean_step
+   ERROR [root] Malformed deploy_step, no "step" key: {}
+   ERROR [root] Invalid content error: Invalid request body: baz
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in dispatch_to_managers
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
+    result = ext.execute(command_part, **kwargs)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -7322,13 +7316,19 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-   ERROR [root] Command failed: execute_deploy_step, error: Block device caused unknown error: I'm a teapot
+ironic_python_agent.errors.InvalidContentError: Invalid request body: baz
+   ERROR [root] Command failed: execute_deploy_step, error: Malformed deploy_step, no "step" key: {}
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 77, in execute_deploy_step
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 73, in execute_deploy_step
+    raise ValueError(msg)
+ValueError: Malformed deploy_step, no "step" key: {}
+ WARNING [ironic_python_agent.inspector] failed to get system journal
+   ERROR [root] Unexpected exception performing service step erase_devices. RuntimeError: boom
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
     result = hardware.dispatch_to_managers(step['step'], node, ports,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<string>", line 3, in dispatch_to_managers
@@ -7340,41 +7340,8 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03429532051086426 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03429532051086426 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03834271430969238 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Failed to set configuration of device <Mock name='mock.dev_pci' id='4107616976'>,  ['SRIOV_EN=20']: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512 ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled
-ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096 ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr ... ok
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition ... ok
-   ERROR [root] Error performing service step erase_devices
+RuntimeError: boom
+   ERROR [root] Command failed: execute_service_step, error: Service step failed: Unexpected exception performing service step erase_devices. RuntimeError: boom
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
     result = hardware.dispatch_to_managers(step['step'], node, ports,
@@ -7388,16 +7355,28 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-   ERROR [root] Command failed: execute_service_step, error: Block device caused unknown error: I'm a teapot
+RuntimeError: boom
+
+During handling of the above exception, another exception occurred:
+
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
-    result = hardware.dispatch_to_managers(step['step'], node, ports,
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in dispatch_to_managers
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 88, in execute_service_step
+    raise errors.ServicingError(msg)
+ironic_python_agent.errors.ServicingError: Service step failed: Unexpected exception performing service step erase_devices. RuntimeError: boom
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error ... ok
+   ERROR [root] Command execution error: Command execution failed: foo bar baz
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
+    result = ext.execute(command_part, **kwargs)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -7406,113 +7385,51 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail ... ok
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force
-ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_equal ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure ... ok
+ironic_python_agent.errors.CommandExecutionError: Command execution failed: foo bar baz
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle ... ok
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices
+ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step ... ok
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image
+ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config_exception
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_set_config_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0002582073211669922 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Malformed deploy_step, no "step" key: {}
-   ERROR [root] Command failed: execute_deploy_step, error: Malformed deploy_step, no "step" key: {}
+   ERROR [root] Error performing service step erase_devices
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/deploy.py", line 73, in execute_deploy_step
-    raise ValueError(msg)
-ValueError: Malformed deploy_step, no "step" key: {}
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0002582073211669922 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.014851808547973633 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.014851808547973633 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_hash ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.015613555908203125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.015613555908203125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.022950172424316406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.022950172424316406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.02681899070739746 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.02681899070739746 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.030892372131347656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.030892372131347656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal
-ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03143668174743652 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5 ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03143668174743652 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03191232681274414 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03191232681274414 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Malformed service_step, no "step" key: {}
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03548622131347656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03548622131347656 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-   ERROR [root] Command failed: execute_service_step, error: Malformed service_step, no "step" key: {}
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in dispatch_to_managers
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+   ERROR [root] Command failed: execute_service_step, error: Block device caused unknown error: I'm a teapot
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 74, in execute_service_step
-    raise ValueError(msg)
-ValueError: Malformed service_step, no "step" key: {}
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03612923622131348 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config ... ok
-   ERROR [root] Configuraiton ESWITCH_HAIRPIN_TOT_BUFFER_SIZE[8] for device <Mock name='mock.dev_pci' id='4113358160'> is not supported with current fw
-   ERROR [root] Tried to execute fake.fake_sync_command, agent is still executing Command name: name, params: {}, status: RUNNING, result: None.
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_capture_region ... ok
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0020186901092529297 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0020186901092529297 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.008101224899291992 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
-   ERROR [root] Configuraiton: UNSUPPORTED_PARAM is not supported by mstconfig, please update to the latest mstflint package.
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.008101224899291992 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.012025594711303711 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.012025594711303711 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0159914493560791 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0159914493560791 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
-   ERROR [root] Clean version mismatch for command execute_deploy_step
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.01999831199645996 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.01999831199645996 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.024045228958129883 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.024045228958129883 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03202056884765625 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03202056884765625 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
-   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None.
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03599810600280762 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03599810600280762 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.03997659683227539 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.03997659683227539 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
-   ERROR [root] Invalid content error: Invalid request body: baz
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
-    result = ext.execute(command_part, **kwargs)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 77, in execute_service_step
+    result = hardware.dispatch_to_managers(step['step'], node, ports,
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in dispatch_to_managers
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -7521,47 +7438,29 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.InvalidContentError: Invalid request body: baz
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.04236960411071777 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4105807504'> Response headers: <MagicMock name='get().headers' id='4105832080'>
- WARNING [ironic_python_agent.extensions.image] Unable to umount vfat partitions. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/dev. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/proc. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/run. Error: Unexpected error while running command.
+ironic_python_agent.errors.BlockDeviceError: Block device caused unknown error: I'm a teapot
+   ERROR [ironic_python_agent.utils] failed to run hardware-detect utility: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
+Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential ...  WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/sys. Error: Unexpected error while running command.
+   ERROR [ironic_python_agent.burnin] fio (disk) failed with error Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
+Stdout: None
 Stderr: None
-ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_get_inspector ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy ... ok
-   ERROR [root] Clean version mismatch for command execute_service_step
-   ERROR [root] Command execution error: Command execution failed: foo bar baz
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_apply_net_firmware_update ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config ...    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 268, in execute_command
-    result = ext.execute(command_part, **kwargs)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 130, in _get_ironic_api_version
+    response = self._request('GET', '/')
+               ^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 90, in _request
+    resp = self.session.request(method,
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in request
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -7570,129 +7469,19 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.CommandExecutionError: Command execution failed: foo bar baz
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256 ... ok
+Exception: Boom
+ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_no_step ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_tuple_result ... ok
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_fw
 ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_fw ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2 ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support ... ok
-   ERROR [root] Failed to move file: /firmware_images/fw1.bin, 
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0014472007751464844 seconds. Error: Received status code 401 from http://example.org, expected 200. Response body: Unauthorized Response headers: <MagicMock name='get().headers' id='4108008856'>
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id ... ok
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch ... ok
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4105682112'>
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4105682112'>
- WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0029191970825195312 seconds. Error: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4105682112'>
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like ... ok
-   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: 
- WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body:   Response headers: <Mock name='mock.headers' id='4105796968'>
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args ... ok
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps
-ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_finalize_rescue ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_hashed_passwords ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success ... ok
-   ERROR [root] Rescue Operation failed when writing the hashed rescue password to the password file. Error 
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/rescue.py", line 48, in write_rescue_password
-    with open(PASSWORD_FILE, 'w') as f:
-         ^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
-OSError
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure ... ok
+ WARNING [root] Attempted to determine if multipath tools were present. Not detected. Error recorded: 
+   ERROR [root] Clean version mismatch for command execute_deploy_step
+   ERROR [root] Malformed service_step, no "step" key: {}
    ERROR [root] Extension do not found
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 267, in execute_command
@@ -7705,253 +7494,216 @@
     return self._extensions_by_name[name]
            ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
 KeyError: 'do'
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps
-ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http ... ok
-   ERROR [root] Failed to open URL data: HTTP Error 500: Internal Error
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password ... ok
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror
-ironic_python_agent.tests.unit.extensions.test_rescue.TestRescueExtension.test_write_rescue_password_ioerror ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension
-ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception ... ok
-   ERROR [ironic_python_agent.burnin] SMART test on /dev/sdj failed with 'string'
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/md/esp using the install command which does not place Secure Boot signed binaries.
- WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
-Command: grub2-install
-Exit code: 1
-Stdout: ''
-Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
- WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
-Command: grub2-install
-Exit code: 1
-Stdout: ''
-Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
-   ERROR [root] Failed to open URL data: <urlopen error URL error>
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt ... ok
- WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: 'fake'
- WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
+   ERROR [root] Command failed: execute_service_step, error: Malformed service_step, no "step" key: {}
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/service.py", line 74, in execute_service_step
+    raise ValueError(msg)
+ValueError: Malformed service_step, no "step" key: {}
+   ERROR [ironic_python_agent.utils] JSON returned from hardware-detect cannot be decoded: Expecting value: line 1 column 1 (char 0)
+ WARNING [root] Something went wrong when readlink for interface eth2. Error: fake
+ WARNING [root] Could not determine if /dev/sdfake is aread-only device. Error: 
+   ERROR [ironic_python_agent.utils] Failed to sync time using chrony to ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
-Stderr: 'fake'
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true ... ok
-   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /tmp/tmpwmmwuwil/fake_id; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_empty ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_fields ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdatenvidiaNicFirmwareSettings.test_update_nvidia_nic_firmware_settings_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceInformationTestCase.test_normal ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit ... ok
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
- WARNING [ironic_python_agent.efi_utils] Invalid sgdisk line: I am a teaport
- WARNING [ironic_python_agent.efi_utils] No UUID information provided in sgdisk output for partition 1 on device /dev/fake
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac
-ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device ... ok
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser
-ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found ... ok
-   ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: fail
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success ... ok
-   ERROR [ironic_python_agent.burnin] fio (disk) failed with error Unexpected error while running command.
+Stderr: 'time verboten'
+   ERROR [root] Encountered issue attempting to validate the supplied configuration drive. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
- WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: Unexpected error while running command.
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpz6udk4xr/tmp5q8dxujr, error: [Errno 21] Is a directory: '/tmp/tmpz6udk4xr/tmp5q8dxujr'
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs ... ok
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00023889541625976562 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00023889541625976562 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0006744861602783203 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0006744861602783203 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0009818077087402344 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0009818077087402344 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0012753009796142578 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0012753009796142578 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0015635490417480469 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0015635490417480469 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.001836538314819336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.001836538314819336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0021283626556396484 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0021283626556396484 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002414703369140625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002414703369140625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002703428268432617 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002703428268432617 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002996206283569336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [root] Clean version mismatch for command execute_service_step
+ WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'node_node': 'also_not_node'}
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpxg_gs10c/tmpmu28s9mz, error: [Errno 21] Is a directory: '/tmp/tmpxg_gs10c/tmpmu28s9mz'
+   ERROR [ironic_python_agent.utils] Unable to sync clock, available methods of 'ntpdate' or 'chrony' not found.
+   ERROR [root] Command failed: sleep, error: An error occurred: An unexpected error occurred. Please try back later.
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_flow.py", line 41, in sleep
+    time.sleep(sleep_info['time'])
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+ironic_python_agent.errors.RESTError: An error occurred: An unexpected error occurred. Please try back later.
+   ERROR [root] Command failed: start_flow, error: Command execution failed: fake.sleep was failed
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/flow.py", line 44, in start_flow
+    raise errors.CommandExecutionError(
+ironic_python_agent.errors.CommandExecutionError: Command execution failed: fake.sleep was failed
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00015592575073242188 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00015592575073242188 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0005257129669189453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0005257129669189453 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.ironic_api_client] Failed looking up node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' at http://agent-api.ironic.example.org. Check if inspection has completed? Error 400: {"node": {"uuid": "deadbeef-dabb-ad00-b105-f00d00bab10c"}}
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0008447170257568359 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0008447170257568359 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0011477470397949219 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0011477470397949219 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0014493465423583984 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0014493465423583984 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0017256736755371094 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0017256736755371094 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0019903182983398438 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0019903182983398438 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002263784408569336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002263784408569336 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0025391578674316406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0025391578674316406 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0028035640716552734 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpgjzss44w/tmplbl8ve41, error: [Errno 21] Is a directory: '/tmp/tmpgjzss44w/tmplbl8ve41'
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpgjzss44w/tmp6tvgd7oe, error: [Errno 21] Is a directory: '/tmp/tmpgjzss44w/tmp6tvgd7oe'
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_filter_images_duplicate_component_flavor_exception WARNING [root] Could not determine if /dev/sdfake1 is aread-only device. Error: 
+ ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaFirmwareImages.test_validate_images_schema_invalid_parameter ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'heartbeat_timeout': 300}
+   ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'lacking kernel support'
+Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error ... ok
- WARNING [root] Attempted to invoke multipath utilities, but we encountered an error: 
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr
-ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid ... ok
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails ... ok
- WARNING [root] The root device was not detected in 27 seconds
-   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 2 times.
- WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
- WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
-   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 3 times.
-   ERROR [root] Mismatch provided checksum a94e683ea16d9ae44768f0a65942234d for image http://10.10.10.10/firmware_images/fw1.bin
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize ... ok
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize
-ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises ... ok
- WARNING [root] Attempted to determine if multipath tools were present. Not detected. Error recorded: 
- WARNING [root] The root device was not detected in 45 seconds
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers ... ok
-   ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point ... ok
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00016021728515625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00016021728515625 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0005056858062744141 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0005056858062744141 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0007834434509277344 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0007834434509277344 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0010514259338378906 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0010514259338378906 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0013155937194824219 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0013155937194824219 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [root] Command failed: sleep, error: foo
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_flow.py", line 41, in sleep
+    time.sleep(sleep_info['time'])
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1202, in _execute_mock_call
+    raise result
+Exception: foo
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00157928466796875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00157928466796875 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0018489360809326172 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0018489360809326172 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [root] Command failed: start_flow, error: Command execution failed: fake.sleep was failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
-    raise ExecutionError()
-ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
-   ERROR [root] The provided psid MT_0000000227 does not match the image psid MT_0000000228
- WARNING [root] Device /dev/fake1 is inaccessible, skipping... Error: nope
-   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'error'
-Stderr: None.
- WARNING [root] The root device was not detected in 27 seconds
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/flow.py", line 44, in start_flow
+    raise errors.CommandExecutionError(
+ironic_python_agent.errors.CommandExecutionError: Command execution failed: fake.sleep was failed
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002124786376953125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002124786376953125 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0023920536041259766 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.efi_utils] Empty EFI partition detected.
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0023920536041259766 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0026540756225585938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+   ERROR [root] We were unable to make a new filesystem for the configuration drive. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+   ERROR [root] duplicate settings for device ID 1017 
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmp_1qil_fr/tmp1irn6rpb, error: [Errno 21] Is a directory: '/tmp/tmp_1qil_fr/tmp1irn6rpb'
+ WARNING [ironic_lib.utils] Failed to unlink /tmp/tmp_1qil_fr/tmpz9ipkf9t, error: [Errno 21] Is a directory: '/tmp/tmp_1qil_fr/tmpz9ipkf9t'
+ WARNING [ironic_python_agent.ironic_api_client] Got invalid heartbeat from the API: {'node': {'uuid': 'deadbeef-dabb-ad00-b105-f00d00bab10c'}}
+   ERROR [root] There is no deviceID provided for this settings
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00019216537475585938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.00019216537475585938 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0005824565887451172 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0005824565887451172 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0008852481842041016 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0008852481842041016 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0011510848999023438 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0011510848999023438 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0013823509216308594 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0013823509216308594 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0016734600067138672 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0016734600067138672 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.001971006393432617 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.001971006393432617 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0022487640380859375 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0022487640380859375 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0025243759155273438 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0025243759155273438 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0028007030487060547 seconds. Error: Missing ['user', 'password'] fields from HTTP(S) basic auth config
+ WARNING [root] We were unable to examine the configuration drive, bypassing. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
- WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
+   ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected ... ok
- WARNING [ironic_python_agent.extensions.standby] poweroff command failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None, falling back to sysrq-trigger
-   ERROR [root] Command failed: power_off, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1041, in _run_shutdown_command
-    utils.execute("echo o > /proc/sysrq-trigger", shell=True)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 131, in manage_uefi
+    utils.execute('mount', efi_partition, efi_partition_mount_point)
   File "<string>", line 3, in execute
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
@@ -7964,104 +7716,109 @@
 oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
 Command: None
 Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.disk_utils] Failed to verify partition tables on device /dev/fake: Unexpected error while running command.
+Command: None
+Exit code: -
 Stdout: None
 Stderr: None
-
-During handling of the above exception, another exception occurred:
-
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0016756057739257812 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0016756057739257812 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.002233266830444336 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.002233266830444336 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0027124881744384766 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0027124881744384766 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0031957626342773438 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.0031957626342773438 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.003690481185913086 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.003690481185913086 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004185676574707031 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004185676574707031 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.004686832427978516 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.004686832427978516 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.005193233489990234 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.005193233489990234 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.005695343017578125 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: URL: http://example.org; time: 0.005695343017578125 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.00619196891784668 seconds. Error: Received status code 404 from http://example.org, expected 200. Response body: <MagicMock name='get().text' id='4106073768'> Response headers: <MagicMock name='get().headers' id='4106096760'>
+   ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1057, in power_off
-    self._run_shutdown_command('poweroff')
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1045, in _run_shutdown_command
-    raise errors.SystemRebootError(e.exit_code, e.stdout, e.stderr)
-ironic_python_agent.errors.SystemRebootError: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
-   ERROR [root] The provided firmware version 20.34.1012 does not match image firmware version 20.35.1012
-   ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
+    raise ExecutionError()
+ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
+   ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 130, in _get_ironic_api_version
-    response = self._request('GET', '/')
-               ^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/ironic_api_client.py", line 90, in _request
-    resp = self.session.request(method,
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in request
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 185, in manage_uefi
+    _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 351, in _run_efibootmgr
+    boot_records = list(get_boot_records())
+                   ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 282, in get_boot_records
+    efi_output = utils.execute('efibootmgr', '-v', binary=True)
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in execute
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
     return self._execute_mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
-Exception: Boom
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails ... ok
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works
-ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works ... ok
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config ... ok
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config
-ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set ... ok
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs
-ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name ... ok
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail
-ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail ... ok
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
- WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
- WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip ... ok
-   ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
+  File "/usr/lib/python3.12/unittest/mock.py", line 1202, in _execute_mock_call
+    raise result
+oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
+   ERROR [ironic_python_agent.efi_utils] Umounting efi system partition failed. Attempted 3 times. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'no umount'
 Stderr: None
-   ERROR [root] Command failed: power_off, error: Error syncing system clock: Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info ... ok
+ WARNING [ironic_python_agent.disk_utils] Unable to get partition table type for device hello
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_exception ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_fail ... ok
+   ERROR [ironic_python_agent.disk_utils] Security: Unable to safety check image
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_no_step ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal
+ironic_python_agent.tests.unit.test_encoding.TestSerializableComparable.test_childclass_notequal ... ok
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_already_running ... ok
+   ERROR [ironic_python_agent.disk_utils] Security: Image failed safety check
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_lacking_support ... ok
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_ll_fails ... ok
+   ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 825, in sync_clock
-    execute('ntpdate', CONF.ntp_server)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 185, in manage_uefi
+    _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 351, in _run_efibootmgr
+    boot_records = list(get_boot_records())
+                   ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 282, in get_boot_records
+    efi_output = utils.execute('efibootmgr', '-v', binary=True)
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "<string>", line 3, in execute
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
@@ -8069,79 +7826,47 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
     return self._execute_mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
+  File "/usr/lib/python3.12/unittest/mock.py", line 1202, in _execute_mock_call
+    raise result
 oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
-Stderr: None
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1096, in _sync_clock
-    utils.sync_clock(ignore_errors=ignore_errors)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 832, in sync_clock
-    raise errors.CommandExecutionError(msg)
-ironic_python_agent.errors.CommandExecutionError: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
-
-During handling of the above exception, another exception occurred:
-
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1057, in power_off
-    self._run_shutdown_command('poweroff')
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1016, in _run_shutdown_command
-    self._sync_clock(ignore_errors=True)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1106, in _sync_clock
-    raise errors.ClockSyncError(msg)
-ironic_python_agent.errors.ClockSyncError: Error syncing system clock: Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_tuple_result ... ok
+ WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_mpathconf ... ok
+   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 2 times.
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_no_multipath ... ok
+   ERROR [ironic_python_agent.disk_utils] Unable to stat device /dev/disk/by-path/ip-1.2.3.4:5678-iscsi-iqn.fake-lun-9 after attempting to verify 3 times.
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_not_found_mpath_config ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicConfig.test_validate_config_unsupported_config_by_mstflint_package ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_version_mismatch ... ok
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test__collect_udev ... ok
+ WARNING [ironic_python_agent.disk_utils] Unable to probe for partitions on device /dev/fake, the partitioning table may be broken. Error: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching
-ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent ... ok
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation ... ok
- WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'node_node': 'also_not_node'}
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body ... ok
- WARNING [ironic_python_agent.ironic_api_client] Failed looking up node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' at http://agent-api.ironic.example.org. Check if inspection has completed? Error 400: {"node": {"uuid": "deadbeef-dabb-ad00-b105-f00d00bab10c"}}
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises
-ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image ... ok
- WARNING [ironic_python_agent.ironic_api_client] Got invalid node data in response to query for node with addresses '00:0c:29:8c:11:b1,00:0c:29:8c:11:b2' from http://agent-api.ironic.example.org: {'heartbeat_timeout': 300}
- WARNING [ironic_python_agent.ironic_api_client] Got invalid heartbeat from the API: {'node': {'uuid': 'deadbeef-dabb-ad00-b105-f00d00bab10c'}}
-   ERROR [ironic_python_agent.agent] error sending heartbeat to <Mock name='mock.api_urls' id='4095023120'>
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success
+ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected ... ok
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0014617443084716797 seconds. Error: Received status code 401 from http://example.org, expected 200. Response body: Unauthorized Response headers: <MagicMock name='get().headers' id='4107955944'>
+   ERROR [ironic_python_agent.agent] error sending heartbeat to <Mock name='mock.api_urls' id='4105422072'>
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/agent.py", line 148, in do_heartbeat
     self.api.heartbeat(
@@ -8154,114 +7879,85 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
 Exception: uh oh!
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks ... ok
- WARNING [root] Mismatched hardware managers versions. Agent version: {'specific': '1'}, node version: {'not_specific': '1'}
-   ERROR [root] Command failed: prepare_image, error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /tmp/tmpyr_30484/fake_id; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching
+ironic_python_agent.tests.unit.test_hardware.TestListHardwareInfo.test_caching ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test__query_device ... ok
+   ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 980, in prepare_image
-    _validate_partitioning(device)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 794, in _validate_partitioning
-    disk_utils.partprobe(device)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/disk_utils.py", line 665, in partprobe
-    utils.execute('partprobe', device, attempts=attempts)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/base.py", line 89, in do_not_call
-    raise Exception(
-Exception: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait ... ok
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
+    raise ExecutionError()
+ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
+ironic-python-agent: Excluding device sda1 from virtual mediaconsideration as it is a partition.
+ironic-python-agent: Found possible vmedia candidate /dev/sda2, however the device failed vmedia validity checking.
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs
+ironic_python_agent.tests.unit.test_hardware.TestCollectSystemLogs.test_collect_system_logs ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error ... ok
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_version_mismatch ... ok
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4107218112'>
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4107218112'>
+ WARNING [ironic_python_agent.extensions.standby] URL: http://example.org; time: 0.0022728443145751953 seconds. Error: Received status code 500 from http://example.org, expected 200. Response body: Oops Response headers: <MagicMock name='get().headers' id='4107218112'>
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_execute_clean_step_with_args ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed
+ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail
+ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_already_set ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_error ... ok
+ironic-python-agent: Was unable to execute the lsblk command. Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
+Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestVersions.test_check_versions
-ironic_python_agent.tests.unit.test_hardware.TestVersions.test_check_versions ... ok
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat
-ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat ... ok
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed ... ok
- WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
- WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
- WARNING [ironic_python_agent.extensions.image] Failed to copy grubenv file. Error: copy failed
-ironic_python_agent.tests.unit.test_hardware.TestVersions.test_get_current_versions
-ironic_python_agent.tests.unit.test_hardware.TestVersions.test_get_current_versions ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure ... ok
-   ERROR [root] Command failed: fake_async_command, error: An error occurred: failed
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_fresh ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test__get_ironic_api_version_set_via_conf ... ok
+   ERROR [root] Command failed: foo_command, error: command execution failed
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_base.py", line 38, in fake_async_command
-    raise ExecutionError()
-ironic_python_agent.tests.unit.extensions.test_base.ExecutionError: An error occurred: failed
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required ... ok
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required
-ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required ... ok
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait ... ok
-   ERROR [root] Command failed: sleep, error: An error occurred: An unexpected error occurred. Please try back later.
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_agent.py", line 44, in foo_execute
+    raise EXPECTED_ERROR
+RuntimeError: command execution failed
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: 
+ WARNING [ironic_python_agent.extensions.standby] Unable to connect to http://example.org, retrying. Error: Error downloading image: Download of image fake_id failed: Received status code 500 from http://example.org, expected 200. Response body:   Response headers: <Mock name='mock.headers' id='4106194280'>
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid ... ok
+ironic-python-agent: Did not identify any virtual media candidates devices.
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail ... ok
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+   ERROR [root] Command failed: install_bootloader, error: meow
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_flow.py", line 41, in sleep
-    time.sleep(sleep_info['time'])
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
+    _install_grub2(device,
+  File "<string>", line 3, in _install_grub2
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -8270,256 +7966,164 @@
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
-ironic_python_agent.errors.RESTError: An error occurred: An unexpected error occurred. Please try back later.
-ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_correct_mac
-ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_correct_mac ... ok
-   ERROR [root] Command failed: start_flow, error: Command execution failed: fake.sleep was failed
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/flow.py", line 44, in start_flow
-    raise errors.CommandExecutionError(
-ironic_python_agent.errors.CommandExecutionError: Command execution failed: fake.sleep was failed
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions ... ok
- WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+OSError: meow
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error ... ok
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config
+ironic_python_agent.tests.unit.test_hardware.TestMultipathEnabled.test_enable_multipath_with_config ... ok
+   ERROR [root] Failed Prerequisite check. Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
+Stdout: None
 Stderr: None
- WARNING [ironic_python_agent.agent] No route to host 1.2.1.2, route record: Error: some error text
- WARNING [ironic_python_agent.disk_utils] Failed to verify partition tables on device /dev/fake: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid
+ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony ... ok
+ WARNING [root] The root device was not detected in 27 seconds
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps
+ironic_python_agent.tests.unit.extensions.test_clean.TestCleanExtension.test_get_clean_steps ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_body ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy ... ok
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once
+ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_fw_update_if_needed_with_reset ... ok
+ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs
+ironic_python_agent.tests.unit.extensions.test_log.TestLogExtension.test_collect_system_logs ... ok
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_execute_deploy_step_with_args ... ok
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps
+ironic_python_agent.tests.unit.extensions.test_deploy.TestDeployExtension.test_get_deploy_steps ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme ... ok
+ WARNING [root] The root device was not detected in 45 seconds
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_code ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_bad_response_data ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_exception ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_no_step ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_tuple_result ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_version_mismatch ... ok
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_execute_service_step_with_args ... ok
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps
+ironic_python_agent.tests.unit.extensions.test_service.TestServiceExtension.test_get_service_steps ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_get_nic_psid ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_is_image_changed_true ... ok
+   ERROR [root] Failed to create config drive on disk /dev/fake for node 12345678-1234-1234-1234-1234567890abcxyz. Error: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- WARNING [ironic_python_agent.extensions.standby] Failed to call get_disk_identifier: Unable to obtain the root_uuid parameter: The hexdump tool may be missing in IPA: 
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success
-ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry ... ok
-ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_pxelinux_mac
-ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_pxelinux_mac ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump ... ok
-   ERROR [root] Command failed: sleep, error: foo
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/extensions/test_flow.py", line 41, in sleep
-    time.sleep(sleep_info['time'])
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1202, in _execute_mock_call
-    raise result
-Exception: foo
-   ERROR [root] Command failed: start_flow, error: Command execution failed: fake.sleep was failed
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/flow.py", line 44, in start_flow
-    raise errors.CommandExecutionError(
-ironic_python_agent.errors.CommandExecutionError: Command execution failed: fake.sleep was failed
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg ... ok
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts ... ok
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails ... ok
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger
-ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr ... ok
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception ... ok
- WARNING [ironic_python_agent.agent] Cannot get route to host fc00:1111::1: Unexpected error while running command.
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: 'boom'
 Stderr: None
- WARNING [ironic_python_agent.agent] No route to host 1.2.1.2, route record: Error: some error text
- WARNING [ironic_python_agent.agent] Cannot get route to host fc00:1111::1: Unexpected error while running command.
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output ... ok
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: 'boom'
 Stderr: None
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false ... ok
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured
-ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid ... ok
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder ... ok
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib
-ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib ... ok
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true
-ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_set_password_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4 ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6 ... ok
-   ERROR [ironic_python_agent.disk_utils] Security: Unable to safety check image
-   ERROR [ironic_python_agent.disk_utils] Security: Image failed safety check
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token ... ok
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success
-ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success ... ok
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error ... ok
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure ... ok
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable ... ok
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass
-ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_enabled_unlock_exception ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__ata_erase_security_erase_exec_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host ... ok
-   ERROR [ironic_python_agent.utils] collector <Mock name='mock.name' id='4097438296'> failed: boom
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2 ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path
-ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_and_stream_false
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_and_stream_false ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported ... ok
- WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
-   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'error'
-Stderr: None.
-   ERROR [ironic_python_agent.extensions.image] Umounting efi system partition failed. Attempted 3 times. Error: Unexpected error while running command.
+Stdout: None
+Stderr: None
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'error'
+Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result ... ok
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string
-ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1 ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2 ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3 ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary ... ok
- WARNING [ironic_python_agent.inspector] no suitable root device detected
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'boom'
 Stderr: None
  WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware ...  WARNING [ironic_python_agent.extensions.standby] poweroff command failed with error Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None, falling back to sysrq-trigger
-   ERROR [root] Command failed: run_image, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
+ok
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_detect_hardware_no_mlnx ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_no_heartbeat_timeout ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id ... ok
+   ERROR [root] Command failed: power_off, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
 Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1043, in _run_shutdown_command
-    utils.execute("echo b > /proc/sysrq-trigger", shell=True)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1041, in _run_shutdown_command
+    utils.execute("echo o > /proc/sysrq-trigger", shell=True)
   File "<string>", line 3, in execute
   File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
     return self._mock_call(*args, **kwargs)
@@ -8541,320 +8145,163 @@
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1051, in run_image
-    self._run_shutdown_command('reboot')
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1057, in power_off
+    self._run_shutdown_command('poweroff')
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1045, in _run_shutdown_command
     raise errors.SystemRebootError(e.exit_code, e.stdout, e.stderr)
 ironic_python_agent.errors.SystemRebootError: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_stream_true
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_stream_true ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__find_pstore_mount_point_no_pstore ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded ... ok
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector
-ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_device_info ... ok
-   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+ WARNING [root] The root device was not detected in 27 seconds
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_busy   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error meow
+ ... ok
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: usb
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_invalid_content ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_other_exception ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_command_success ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_invalid_command ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension
+ironic_python_agent.tests.unit.extensions.test_base.TestExecuteCommandMixin.test_execute_unknown_extension ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid ... ok
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_exc ... ok
+   ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_false   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
+ ... ok
+ WARNING [ironic_python_agent.agent] Cannot get route to host 1.2.1.2: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] No route to host 1.2.1.2, route record: Error: some error text
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true
+ironic_python_agent.tests.unit.test_partition_utils.IsDiskLargerThanMaxSizeTestCases.test_is_disk_larger_than_max_size_true ... ok
+   ERROR [root] Command failed: power_off, error: Error syncing system clock: Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 825, in sync_clock
+    execute('ntpdate', CONF.ntp_server)
+  File "<string>", line 3, in execute
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
-Stderr: None, falling back to sysrq-trigger
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info ... ok
- WARNING [ironic_python_agent.ironic_api_client] Connection error when accessing 2001:db8::1/v1/heartbeat/meow, trying the next URL. Error: 
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__get_md_uuid ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6 ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_linux_raid_member_false ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc ... ok
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node ... ok
-   ERROR [ironic_python_agent.utils] boom
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root
-ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root ... ok
- WARNING [root] Can't find field vendor for device lo in device class net
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
- WARNING [ironic_python_agent.disk_utils] Unable to probe for partitions on device /dev/fake, the partitioning table may be broken. Error: Unexpected error while running command.
+Stderr: None
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1096, in _sync_clock
+    utils.sync_clock(ignore_errors=ignore_errors)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 832, in sync_clock
+    raise errors.CommandExecutionError(msg)
+ironic_python_agent.errors.CommandExecutionError: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
- WARNING [root] Could not determine if /dev/sdfake is aread-only device. Error: 
- WARNING [ironic_python_agent.disk_utils] Unable to get partition table type for device hello
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute
-ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_error ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown
-ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present ... ok
- WARNING [ironic_python_agent.extensions.standby] poweroff command failed with error Unexpected error while running command.
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1057, in power_off
+    self._run_shutdown_command('poweroff')
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1016, in _run_shutdown_command
+    self._sync_clock(ignore_errors=True)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1106, in _sync_clock
+    raise errors.ClockSyncError(msg)
+ironic_python_agent.errors.ClockSyncError: Error syncing system clock: Failed to sync hardware clock: Command execution failed: Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: ''
-Stderr: None, falling back to sysrq-trigger
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq ... ok
- WARNING [root] Could not determine if /dev/sdfake1 is aread-only device. Error: 
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase
-ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase ... ok
- WARNING [root] Can't find field vendor for device lo in device class net
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed ... ok
+ironic-python-agent: Excluding device sdh1 from virtual mediaconsideration as it is a partition.
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_failed_on_second_command ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_false
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_false ... ok
- WARNING [root] No hardware manager was able to handle interface foobar
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal ... ok
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed
-ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns ... ok
- WARNING [ironic_python_agent.extensions.standby] reboot command has been ignored, falling back to sysrq-trigger
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_error
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_error ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags ... ok
- WARNING [root] Cannot find detailed information about interface eth0
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_read_only_device_partition_ok ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info ... ok
- WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
- WARNING [ironic_python_agent.extensions.image] efibootmgr is not available in the ramdisk
-   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error 
-   ERROR [root] Command failed: install_bootloader, error: 
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
-    result = self.execute_method(**self.command_params)
-             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
-    _install_grub2(device,
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 167, in _install_grub2
-    root_partition = partition_utils.get_partition(device, uuid=root_uuid)
-                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/partition_utils.py", line 615, in get_partition
-    ipa_utils.rescan_device(device)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 921, in rescan_device
-    execute('partx', '-av', device, attempts=3, delay_on_retry=True)
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 77, in execute
-    return ironic_utils.execute(*cmd, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in do_not_call
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
-FileNotFoundError
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_execute_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_detect_cna_card_no_i40e_driver ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_in_cna_card ... ok
+/bin/sh: line 1: mkisofs: command not found
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test__smart_test_status_missing ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_default ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_default ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_no_fio ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_disk_smart_test ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format ... ok
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure
-ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled ... ok
- WARNING [root] Cannot find detailed information about interface eth0
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists_no_match
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_exists_no_match ... ok
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url
-ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url ... ok
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6 ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token ... ok
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca
-ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled ... ok
- WARNING [root] Cannot find detailed information about interface bond0
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist ... ok
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only ... ok
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled
-ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration ... ok
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl
-ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl ... ok
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir ... ok
-ironic-python-agent: line 1.
-ironic-python-agent: line 2 message
- WARNING [root] Cannot find detailed information about interface eth0
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: usb
-ironic-python-agent: Excluding device sdh1 from virtual mediaconsideration as it is a partition.
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger
-ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_node_locked ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha256 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_centos_checksum_sha512 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -8914,7 +8361,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4ac2ab0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4466108>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -8928,7 +8375,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ac2ab0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4466108>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -8947,214 +8394,590 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ac2ab0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4466108>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_empty_file_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed ... ok
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
- WARNING [root] Cannot find detailed information about interface eth0
-   ERROR [root] Command failed: foo_command, error: command execution failed
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_failed_md5 ... ok
+ WARNING [ironic_python_agent.agent] Cannot get route to host fc00:1111::1: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.agent] No route to host 1.2.1.2, route record: Error: some error text
+ WARNING [ironic_python_agent.agent] Cannot get route to host fc00:1111::1: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_md5 ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_no_data ... ok
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: sata
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareOps.test_parse_mstflint_query_output_with_running_fw ... ok
+ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute
+ironic_python_agent.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute ... ok
+ WARNING [ironic_python_agent.ironic_api_client] Connection error when accessing 2001:db8::1/v1/heartbeat/meow, trying the next URL. Error: 
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: scsi
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_sleep_flow_success ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_empty_command_map ... ok
+   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None.
+ WARNING [ironic_python_agent.extensions.image] Unable to umount vfat partitions. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/dev. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/proc. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/run. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+ WARNING [ironic_python_agent.extensions.image] Unable to umount /tmp/fake-dir/sys. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'boom'
+Stderr: None
+   ERROR [root] Command failed: prepare_image, error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
 Traceback (most recent call last):
   File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
     result = self.execute_method(**self.command_params)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_agent.py", line 44, in foo_execute
-    raise EXPECTED_ERROR
-RuntimeError: command execution failed
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: sata
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 980, in prepare_image
+    _validate_partitioning(device)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 794, in _validate_partitioning
+    disk_utils.partprobe(device)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/disk_utils.py", line 665, in partprobe
+    utils.execute('partprobe', device, attempts=attempts)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/base.py", line 89, in do_not_call
+    raise Exception(
+Exception: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_execution_failure ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config ... ok
+ironic-python-agent: Device sdh appears to not qualify as virtual due to the device size. Size: 1610612736000
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config ... ok
+ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: usb
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_custom_attempts ... ok
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_fails ... ok
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger
+ironic_python_agent.tests.unit.test_disk_utils.TriggerDeviceRescanTestCase.test_trigger ... ok
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none
+ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test__is_virtual_media_device_path_doesnt_exist ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha256 ... ok
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_all ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_missing_command ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_multiple_sha512 ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_evaluate_hardware_support_no_mlnx ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_generate_client_id ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_clean_steps ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info ... ok
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test__heartbeat_expected ... ok
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_boot_only ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_name ... ok
+/bin/sh: line 1: mkisofs: command not found
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_failed_to_find_extension ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_ib_interface ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mac_address ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_not_found ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_gpt ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr
+ironic_python_agent.tests.unit.test_disk_utils.FindEfiPartitionTestCase.test_find_efi_partition_only_boot_flag_mbr ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size
+ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_enabled_no_results ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_node_indicates_skip ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestUpdateNvidiaNicFirmwareImage.test_update_nvidia_nic_firmware_image_exception ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_write_error ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_disable_embedded_lldp_agent_wrong_dir_path ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_transient_exceptions ... ok
+/bin/sh: line 1: mkisofs: command not found
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client ... ok
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache
+ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_checksum_unknown_file_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_bios ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__message_format_partition_uefi ... ok
+ WARNING [ironic_python_agent.extensions.standby] Failed to call get_disk_identifier: Unable to obtain the root_uuid parameter: The hexdump tool may be missing in IPA: 
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test__sync_clock ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image ... ok
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail
+ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail ... ok
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_ok ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_exists
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_exists ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_not_enabled ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_get_interface_info_no_mlnx_interface ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac
+ironic_python_agent.tests.unit.hardware_managers.test_mlnx.MlnxHardwareManager.test_infiniband_address_to_mac ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv ... ok
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled
+ironic_python_agent.tests.unit.test_inspector.TestWaitForDhcp.test_disabled ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_no_cna_card_detected ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info
-ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia
-ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia ... ok
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk
-ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: other, Transport: scsi
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_cache_and_write_image_configdirve ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_conf_credential ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_image_info_credential ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_and_invalid_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success
+ironic_python_agent.tests.unit.extensions.test_flow.TestFlowExtension.test_validate_exts_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_basic_auth_mixed_credential_second ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_bad_status ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_conf_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_basic_auth_image_info_success ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_disabled ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_apply_configuration_no_delete ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_steps_exist ... ok
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises
+ironic_python_agent.tests.unit.test_hardware.TestProtectedDiskSafetyChecks.test_special_filesystem_guard_raises ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_proxy ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_invalid
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_invalid ... ok
- WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields ... ok
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part ... ok
-/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:57: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc.
-  self.assertLess(cert.not_valid_before,
-/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:59: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc.
-  self.assertGreater(cert.not_valid_after,
- WARNING [ironic_python_agent.dmi_inspector] Failed to parse Handle type in dmi output: list index out of range
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_success_without_agent ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_async_command_validation_failure ... ok
+ WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
+ WARNING [root] Can't find field vendor for device sda in device class block
+ WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_download_image_verify_fails WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
+ ... ok
+ WARNING [root] Can't find field vendor for device sdb in device class block
+ WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
+ WARNING [root] Can't find field vendor for device md0 in device class block
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat
+ironic_python_agent.tests.unit.test_agent.TestHeartbeater.test_heartbeat ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields
+ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_DeployFail_exc ... ok
+ WARNING [root] Can't find field vendor for device lo in device class net
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_absent ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_exc ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_unknown_exception_fallback ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_command_map ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_execution_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_name ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__add_multi_bootloaders ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__append_uefi_to_fstab_handles_error ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_bios ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_no_root ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_prep ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_gpt ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_msdos ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown
+ironic_python_agent.tests.unit.test_disk_utils.GetPartitionTableTypeTestCase.test_unknown ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase
+ironic_python_agent.tests.unit.test_partition_utils.GetLabelledPartitionTestCases.test_get_partition_present_uppercase ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct_gpt_nvme
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_correct_gpt_nvme ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_convert_to_sparse ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test__wait_for_interface_expired ... ok
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_format_error ... ok
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_fail_safety_check ... ok
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass
+ironic_python_agent.tests.unit.test_disk_utils.ImageInspectionTest.test_image_inspection_pass ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect ... ok
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect_gpt
 ironic_python_agent.tests.unit.test_disk_utils.ListPartitionsTestCase.test_incorrect_gpt ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str ... ok
-ironic-python-agent: Device sdh appears to not qualify as virtual due to the device size. Size: 1610612736000
-ironic-python-agent: Device sdh was disqualified as virtual media. Type: disk, Transport: usb
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid ... ok
- WARNING [root] Cannot find detailed information about interface eth0
- WARNING [root] Cannot find detailed information about interface eth0.100
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_gpt_disk_label ... ok
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large
-ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_clean_uefi_nvram_defaults ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_params_validation ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_fail ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_block_uuid_fallback_to_uuid ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_sync_command_validation_failure ... ok
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled
+ironic_python_agent.tests.unit.hardware_managers.test_cna.TestIntelCnaHardwareManager.test_evaluate_hardware_support_with_collect_lldp_enabled ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_do_lookup_with_uuid ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_no_wait ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_none ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data ... ok
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_bad_data ... ok
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate
-ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces ... ok
-   ERROR [ironic_python_agent.utils] failed to run dmidecode: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_failure ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_configdrive_partition ... ok
- WARNING [root] Cannot find detailed information about interface eth0
- WARNING [root] Cannot find detailed information about interface eth0.100
- WARNING [root] Cannot find detailed information about interface eth0.101
-ironic-python-agent: Copying configuration from /tmp/tmpunwh92sa/etc/ironic-python-agent to /etc/ironic-python-agent
-ironic-python-agent: Copying configuration from /tmp/tmpunwh92sa/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_dmidecode_info_ok ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_ephemeral_partition ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror ... ok
- WARNING [root] Cannot find detailed information about interface eth0
- WARNING [root] Cannot find detailed information about interface eth1
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv4 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_image_info_user_pass_success ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_no_logical_partitions ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_execution_failure ... ok
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success
+ironic_python_agent.tests.unit.extensions.test_base.TestExtensionDecorators.test_wait_async_command_success ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_failure ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_count_mbr_partitions_wrong_partition_table ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_attempts ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestImageDownload.test_download_image_retries_success ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_raises ... ok
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works
+ironic_python_agent.tests.unit.test_disk_utils.OtherFunctionTestCase.test_is_block_device_works ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_none ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_ipv6 ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_false_wait ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_grub_failure_api_override ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback ... ok
+ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_correct_mac
+ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_correct_mac ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq ... ok
+ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_pxelinux_mac
+ironic_python_agent.tests.unit.test_inspector.TestNormalizeMac.test_pxelinux_mac ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_number_nvme ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_get_agent_url_protocol ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception ... ok
+ WARNING [root] Can't find field vendor for device lo in device class net
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_gen_auth_from_oslo_conf_user_pass_success ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_async_command_success ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_with_on_as_path ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_baseclass_serialize ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_decode_exception
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_decode_exception ... ok
- WARNING [root] Cannot find detailed information about interface eth0.100
- WARNING [root] Cannot find detailed information about interface eth0.101
- WARNING [root] Cannot find detailed information about interface eth1.102
- WARNING [root] Cannot find detailed information about interface eth1.103
-ironic-python-agent: Copying configuration from /tmp/tmpukw69qvu/etc/ironic-python-agent to /etc/ironic-python-agent
-ironic-python-agent: Copying configuration from /tmp/tmpukw69qvu/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4 ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_bios ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_root_partition ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_409_status_code ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_success_with_true_wait ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_advertise_address_provided ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_netutils_exception
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_collect_lldp_data_netutils_exception ... ok
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_cpu ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6 ... ok
-ironic-python-agent: /some/path/etc/ironic-python-agent not found
-ironic-python-agent: /some/path/etc/ironic-python-agent.d not found
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_no_swap_partition ... ok
- WARNING [root] Cannot find detailed information about interface eth0
-ironic-python-agent: /tmp/tmpiota9asv/etc/ironic-python-agent not found
-ironic-python-agent: /tmp/tmpiota9asv/etc/ironic-python-agent.d not found
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_parse_dmi_memory ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal ... ok
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int
-ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int ... ok
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_get_partition_uuids ... ok
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize
+ironic_python_agent.tests.unit.test_encoding.TestSerializable.test_childclass_serialize ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on ...    ERROR [ironic_python_agent.utils] collector <Mock name='mock.name' id='4108446696'> failed: boom
+ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_agent_version_unsupported ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/md/esp using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_image_location ... ok
+ WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
+Command: grub2-install
+Exit code: 1
+Stdout: ''
+Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_configured ... ok
+ WARNING [ironic_python_agent.extensions.image] Ignoring GRUB2 boot loader installation failure: Unexpected error while running command.
+Command: grub2-install
+Exit code: 1
+Stdout: ''
+Stderr: 'grub2-install: error: this utility cannot be used for EFI platforms because it does not support UEFI Secure Boot.\n'.
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_1 ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path
+ironic_python_agent.tests.unit.test_inject_files.TestFindAndMountPath.test_without_on_wrong_path ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_validation ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_grub_failure_api_override ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data ... ok
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status ... ok
- WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Handle'
-ironic-python-agent: No virtual media device detected
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_ppc64le_prep_part ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile ... ok
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia ... ok
-ironic-python-agent: Cannot use configuration from virtual media as the agent was not booted from virtual media.
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_handle ... ok
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls
-ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions ... ok
- WARNING [ironic_python_agent.dmi_inspector] Failed to process memory dmi data: 'Number Of Devices'
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia
-ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia ... ok
-ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys
-ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device ... ok
+ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls
+ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk
+ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_failed ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_2 ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_invalid_node ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_disks_timeout_unconfigured ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token ... ok
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image
+ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_error_format_3 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald ... ok
-ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering
-ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_bootloader_uefi_ignores_manage_failure ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_other ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_node_uuid_unassociated ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_invalid_status_code ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file ... ok
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail
+ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_retry ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_power_off_with_ntp_server ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_execute_agent_command_with_token_invalid ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5 ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_part ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_connection_error ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders
+ironic_python_agent.tests.unit.test_efi_utils.TestRunEfiBootmgr.test__run_efibootmgr_no_bootloaders ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit ... ok
+ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives
+ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_no_wait_for_disks ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_rom ... ok
+ WARNING [root] No hardware manager was able to handle interface foobar
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_exception ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_agent_status ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6 ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia
+ironic_python_agent.tests.unit.test_agent.TestBaseAgentVMediaToken.test_run_agent_token_vmedia ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -9214,7 +9037,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4ca7120>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf441c570>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -9228,7 +9051,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ca7120>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf441c570>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -9247,43 +9070,280 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4ca7120>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf441c570>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep ... ok
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices
-ironic_python_agent.tests.unit.test_dmi_inspector.TestCollectDmidecodeInfo.test_save_data_error_number_of_devices ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_preserve_ephemeral ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid5 ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_several_urls_and_retries ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_sata ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi ... ok
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_get_command_result ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_indexerror ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config ... ok
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute
+ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute ... ok
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_heartbeat_requests_several_urls ... ok
+ WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_host ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline ... ok
+   ERROR [root] Command failed: run_image, error: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1043, in _run_shutdown_command
+    utils.execute("echo b > /proc/sysrq-trigger", shell=True)
+  File "<string>", line 3, in execute
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1051, in run_image
+    self._run_shutdown_command('reboot')
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/standby.py", line 1045, in _run_shutdown_command
+    raise errors.SystemRebootError(e.exit_code, e.stdout, e.stderr)
+ironic_python_agent.errors.SystemRebootError: Error rebooting system: Reboot script failed with exit code None. stdout: None. stderr: None.
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_scsi ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_list_command_results ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_bad_partition ... ok
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia
+ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia ... ok
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large
+ironic_python_agent.tests.unit.test_utils.TestCheckVirtualMedia.test_check_vmedia_device_too_large ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+   ERROR [ironic_python_agent.extensions.standby] Failed to sync hardware clock: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.extensions.standby] Failed to sync file system buffers: Command execution failed: Flushing file system buffers failed. Error: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ WARNING [ironic_python_agent.extensions.standby] reboot command failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2 ... skipped 'mkisofs not installed'
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2 ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_command_fail ... ok
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_encoder ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_node_retries ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv4 ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found
+ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_not_found ... ok
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib
+ironic_python_agent.tests.unit.test_encoding.TestEncoder.test_ironic_lib ... ok
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_default_collector_loadable ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_bios ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ip ... ok
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_configured ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_configdrive ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660 ... skipped 'mkisofs not installed'
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_root ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_fallback_uefi ... ok
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector
+ironic_python_agent.tests.unit.test_inspector.TestMisc.test_raise_on_wrong_collector ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6 ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_prep ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf ... skipped 'mkisofs not installed'
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_route_with_ipv6 ... ok
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root
+ironic_python_agent.tests.unit.test_api.TestIronicAPI.test_v1_root ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_cores_info ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_driver_internal_info ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_no_hexdump ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok
+ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_dict ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_route_source_ipv6_linklocal ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_memory_info ... ok
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured
+ironic_python_agent.tests.unit.test_hardware.TestEvaluateHardwareSupport.test_evaluate_hw_waits_for_disks_nonconfigured ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config ... ok
+ WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_json_str ... ok
+ WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_and_stream_false ... ok
+ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute
+ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_nics_info ... ok
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_get_status ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_from_properties_str ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_bios ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_image_raw_stream_true ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false
+ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_bad_nodes_thread_dirs ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_implicit_with_secure_boot ... ok
+ WARNING [ironic_python_agent.extensions.standby] poweroff command failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: ''
+Stderr: None, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_invalid_cap ... ok
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed
+ironic_python_agent.tests.unit.test_agent.TestAdvertiseAddress.test_with_network_interface_failed ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_cores_info ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collector_failed ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_boot_mode_override_with_instance_info ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_and_stream_false
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_and_stream_false ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_softraid_uefi_gpt ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_memory_info ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_stream_true
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_prepare_partition_image_raw_stream_true ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile ... ok
- WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth0', <Mock id='4105740960'>), ('eth1', <Mock id='4105740864'>)]
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_device_handling_failures_raid6 ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_uefi ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_image ... ok
+ WARNING [ironic_python_agent.extensions.standby] reboot command has been ignored, falling back to sysrq-trigger
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_nodes_nics_info ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_journald_with_logfile ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -9343,7 +9403,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf402c6d8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf427cb88>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -9357,7 +9417,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf402c6d8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf427cb88>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -9376,122 +9436,120 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf402c6d8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf427cb88>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_fails ... ok
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
- WARNING [ironic_python_agent.netutils] Trailing byte received in an LLDP package: b'5'
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_lookup_timeout ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_no_carrier ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_invalid ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_collectors_option ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_cores_info ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid ... ok
+   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'error'
+Stderr: None.
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_ip6 ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_fstab ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_poweroff_sysrq ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_invalid_format_memory_info ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_collect_system_logs_non_journald_with_logfile ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_token ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_biosdevname ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_run_shutdown_command_valid_reboot_sysrq ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5 ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_get_numa_node_id_valid_format ... ok
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca
+ironic_python_agent.tests.unit.test_ironic_api_client.TestBaseIronicPythonAgent.test_successful_heartbeat_with_verify_ca ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_device_extractor ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_mount_fails ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_agent_token
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_agent_token ... ok
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device
-ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device ... ok
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_dict
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_dict ... ok
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image
-ironic_python_agent.tests.unit.test_partition_utils.WorkOnDiskTestCase.test_without_image ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_efi ... ok
-ironic-python-agent: Excluding device sda1 from virtual mediaconsideration as it is a partition.
-ironic-python-agent: Found possible vmedia candidate /dev/sda2, however the device failed vmedia validity checking.
- WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth1', <Mock id='4105165464'>)]
+ WARNING [root] Cannot find detailed information about interface bond0
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_no_nics_dir ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_bond ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_disabled ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6 ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails ... ok
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_json_string
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_json_string ... ok
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_save_api_client ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info ... ok
  WARNING [ironic_python_agent.utils] Ignoring malformed capability 'test:world:2'. Format should be 'key:val'.
  WARNING [ironic_python_agent.utils] Ignoring malformed capability 'badformat'. Format should be 'key:val'.
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_empty_target_raid_config ... ok
-ironic-python-agent: Was unable to execute the lsblk command. Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_memory_unit ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ WARNING [root] Cannot find detailed information about interface eth0
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_old_format_caps
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_extract_capability_from_old_format_caps ... ok
-   ERROR [ironic_python_agent.netutils] Socket for network interface eth0 said that it was ready to read we were unable to read from the socket while trying to get LLDP packet. Skipping this network interface.
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 197, in _get_lldp_info
-    lldp_info[interface[0]] = _receive_lldp_packets(s)
-                              ^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 160, in _receive_lldp_packets
-    pkt = sock.recv(1600)
-          ^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
-OSError: BOOM
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache
-ironic_python_agent.tests.unit.test_hardware.TestAPIClientSaveAndUse.test_update_node_cache ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_handles_exec_error ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error ... ok
-ironic-python-agent: Did not identify any virtual media candidates devices.
+ WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match ... ok
+ WARNING [root] Device /dev/sda1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda1'
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp ... ok
+ WARNING [ironic_python_agent.extensions.image] Falling back to fstab entry addition label of UUID. We could not identify which UUID or PARTUUID identifier label should be used, thus UUID will be used.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_no_fstab ... ok
+ WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth0', <Mock id='4107611184'>), ('eth1', <Mock id='4107610896'>)]
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_empty ... ok
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_command_output
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_command_output ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_failure_with_nvme ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__find_vmedia_device_by_labels_not_found ... ok
-   ERROR [ironic_python_agent.netutils] Failed to open all RawPromiscuousSockets, attempting to close any opened sockets.
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_device ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6 ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_force_gpt_with_disk_label ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists ... ok
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4
-ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4 ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_chronyd ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_hints ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_none ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_determine_time_method_ntpdate ... ok
- WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device ... ok
- WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
- WARNING [root] Can't find field vendor for device sda in device class block
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_numa_format_memory_info ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_lldp_error ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -9551,7 +9609,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf41f8888>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4284bd0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -9565,7 +9623,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41f8888>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4284bd0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -9584,44 +9642,73 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41f8888>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4284bd0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
- WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
- WARNING [root] Can't find field vendor for device sdb in device class block
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes ... ok
- WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
- WARNING [root] Can't find field vendor for device md0 in device class block
-   ERROR [ironic_python_agent.utils] Failed to sync time using chrony to ntp server: 192.168.1.1: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: 'time verboten'
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_invalid_raid_config ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output ... ok
+ WARNING [ironic_python_agent.netutils] Trailing byte received in an LLDP package: b'5'
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_listen_host_port
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_listen_host_port ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_chrony_failure ... ok
-   ERROR [ironic_python_agent.utils] Unable to sync clock, available methods of 'ntpdate' or 'chrony' not found.
+   ERROR [ironic_python_agent.utils] boom
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_malformed ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_extensions_failed ... ok
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info
+ironic_python_agent.tests.unit.test_numa_inspector.TestGetNumaTopologyInfo.test_nodes_invalid_threaddir_format_cores_info ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_fail ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_interfaces_with_vendor_info ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_multiple ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_lines ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ WARNING [root] Cannot find detailed information about interface eth0.100
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_journalctl_output_with_units ... ok
+ WARNING [ironic_python_agent.netutils] LLDP timed out, remaining interfaces: [('eth1', <Mock id='4107574200'>)]
+ WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
+ WARNING [ironic_python_agent.extensions.image] Failed to copy grub.cfg file for EFI boot operation. Error copy failed
+ WARNING [ironic_python_agent.extensions.image] Failed to copy grubenv file. Error: copy failed
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_one_empty_interface ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_grubcfg_fails ... ok
+   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf43af7b0>: A problem was encountered
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3468, in dispatch_to_all_managers
+    response = getattr(manager, method)(*args, **kwargs)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
+    return fn(self, *args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
+    raise RuntimeError('A problem was encountered')
+RuntimeError: A problem was encountered
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_ssl_client_options
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_get_ssl_client_options ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_none ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_by_device_device_invalid ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_max_is_first_logical ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ WARNING [root] Cannot find detailed information about interface eth0.100
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails ... ok
+ WARNING [root] Cannot find detailed information about interface eth0.101
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_inspector_error ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -9681,7 +9768,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf41cb9d8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf42327f8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -9695,7 +9782,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41cb9d8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf42327f8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -9714,61 +9801,82 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41cb9d8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf42327f8>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-   ERROR [ironic_python_agent.utils] Failed to sync with ntp server: 192.168.1.1: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_raise_keyboard_interrupt
+ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_raise_keyboard_interrupt ... ok
+   ERROR [ironic_python_agent.netutils] Socket for network interface eth0 said that it was ready to read we were unable to read from the socket while trying to get LLDP packet. Skipping this network interface.
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 197, in _get_lldp_info
+    lldp_info[interface[0]] = _receive_lldp_packets(s)
+                              ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/netutils.py", line 160, in _receive_lldp_packets
+    pkt = sock.recv(1600)
+          ^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+OSError: BOOM
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2 ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_disks_too_small ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_get_lldp_info_socket_recv_error ... ok
+ WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 7: 0b0/0b0
+ WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 0: 0b0/0b1111
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks ... ok
+ WARNING [root] Failed to remove partitions on /dev/sda: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: None
+Stdout: 'No md superblock detected'
 Stderr: None
-/bin/sh: 1: mkisofs: not found
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_raise_keyboard_interrupt
-ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_raise_keyboard_interrupt ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_raises_exception ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__get_vmedia_params_cannot_find_dev ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on ... ok
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none
-ironic_python_agent.tests.unit.test_utils.TestClockSyncUtils.test_sync_clock_ntp_server_is_none ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file ... ok
+ WARNING [root] Failed to remove partitions on /dev/sdb: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: 'No md superblock detected'
+Stderr: None
+ WARNING [root] Cannot find detailed information about interface eth0
+ WARNING [root] Cannot find detailed information about interface eth1
+ WARNING [root] Cannot find detailed information about interface eth0.100
+ WARNING [root] Cannot find detailed information about interface eth0.101
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid ... ok
+ WARNING [root] Cannot find detailed information about interface eth1.102
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_primary_sort
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_primary_sort ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_loader_with_grubcfg ... ok
+ WARNING [root] Cannot find detailed information about interface eth1.103
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_interfaces_using_lldp_all ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets ... ok
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_secondary_sort
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_guess_root_disk_secondary_sort ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2 ... skipped 'mkisofs not installed'
-POST: /v1/commands {'name': 'do_things', 'params': []}
-GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
-POST: /v1/commands {'name': 'do_things', 'params': {'key': 'value'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands?wait=false {'name': 'do_things', 'params': {'key': 'value'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands?wait=true {'name': 'do_things', 'params': {'key': 'value'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands {}
-GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
-POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
-GOT:<WrapperTestResponse streamed [200 OK]>
-POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
-GOT:<WrapperTestResponse streamed [401 UNAUTHORIZED]>
-GET: /v1/status None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1/commands/abc123 None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1/commands None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1/foo None
-GOT:<WrapperTestResponse streamed [404 NOT FOUND]>
-GET: / None
-GOT:<WrapperTestResponse streamed [200 OK]>
-GET: /v1 None
-GOT:<WrapperTestResponse streamed [200 OK]>
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner ... ok
+   ERROR [ironic_python_agent.netutils] Failed to open all RawPromiscuousSockets, attempting to close any opened sockets.
+   ERROR [root] Unable to clean all softraid correctly. Remaining ['/dev/md0']
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_bind_fail ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_failure_blocks_remaining
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_failure_blocks_remaining ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_mdns ... ok
  WARNING [root] Can't find field vendor for device lo in device class net
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -9828,7 +9936,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf408d8d0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf41caa50>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -9842,7 +9950,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf408d8d0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41caa50>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -9861,71 +9969,93 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf408d8d0>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41caa50>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test__read_params_from_file_fail ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_raw_promiscuous_sockets_exception ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_partition
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_partition ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_gzip_and_b64encode ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_from_cache ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_mismatching_hints ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6 ... ok
+ WARNING [root] Cannot find detailed information about interface eth0
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails ... ok
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int
+ironic_python_agent.tests.unit.test_hardware.TestListNetworkInterfaces.test_list_network_vlan_invalid_int ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_no_loader ... ok
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4
+ironic_python_agent.tests.unit.test_netutils.TestNetutils.test_wrap_ipv6_with_ipv4 ... ok
+ WARNING [root] RAID device /dev/md1 will not be deleted
+ WARNING [root] Software RAID device /dev/md1 is not going to be deleted as its volume name - small - is on the skip list
+ WARNING [root] Software RAID device /dev/md1 was not deleted
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps ... ok
+ WARNING [root] Holder disk /dev/sda contains logical disk on the skip list. Deleting just partitions: ['1']
+ WARNING [root] Holder disk /dev/sdb contains logical disk on the skip list. Deleting just partitions: ['1']
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_skip_list
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_skip_list ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_deploy_steps_exist
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_deploy_steps_exist ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi ... ok
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_different_sizes ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_erase_disabled
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_erase_disabled ... ok
    ERROR [ironic_lib.exception] Exception in string format operation (arguments )
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
     message = self._msg_fmt % kwargs
               ~~~~~~~~~~~~~~^~~~~~~~
 KeyError: 'service'
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only ... ok
  WARNING [ironic_python_agent.agent] Could not get baremetal endpoint from mDNS, will not heartbeat
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_kernel_cmdline ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_is_journalctl_present_false ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_no_max ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure ... ok
  WARNING [root] Can't find field vendor for device lo in device class net
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_secure_boot_overriden_with_instance_info_caps ... ok
+   ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: An unknown error occurred erasing block device /dev/sda
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection_without_apiurl
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_inspection_without_apiurl ... ok
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia
-ironic_python_agent.tests.unit.test_utils.GetAgentParamsTestCase.test_get_agent_params_vmedia ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_partitions_detected ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting
-ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_disk_label_ignored_with_uefi ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_5 ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_content_and_deleted ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_raid_6 ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_gpt ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_missing_path ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_skip_list_existing_device_does_not_match ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_no_directories ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_complete_skip_list ... ok
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_disk_label
 ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_disk_label ... ok
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk
+ironic_python_agent.tests.unit.test_partition_utils.RealFilePartitioningTestCase.test_whole_disk ... skipped "parted utility was not found: [Errno 2] No such file or directory: 'parted'"
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed ... ok
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label
+ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label ... ok
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url
+ironic_python_agent.tests.unit.test_inspector.TestInspect.test_ok_with_ironic_url ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled ... ok
+ WARNING [root] Failed to invoke secure erase, falling back to shred: Error erasing block device: An unknown error occurred erasing block device /dev/sda
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed_continued
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed_continued ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled ... ok
+   ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: Block device /dev/sda is frozen and cannot be erased
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_frozen
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_frozen ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_partition_image_with_preserve_failure2 ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -9985,7 +10115,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf40bc330>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf41ef738>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -9999,7 +10129,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf40bc330>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41ef738>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -10018,119 +10148,141 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf40bc330>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='fake_api.example.org', port=8081): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf41ef738>: Failed to resolve 'fake_api.example.org' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_safe
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_safe ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_sleep
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_sleep ... ok
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label
-ironic_python_agent.tests.unit.test_utils.TestUtils.test_specified_partition_table_type_with_instance_disk_label ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_numeric_fields ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_hints ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_root_without_on ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_create_configuration_with_nvme ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields
-ironic_python_agent.tests.unit.test_inject_files.TestValidateFiles.test_unknown_fields ... ok
- WARNING [root] Failed to remove partitions on /dev/sda: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks ... ok
+   ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: Block device /dev/sda already has a security password set
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_unsafe
+ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_unsafe ... ok
+   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf4387438>: A problem was encountered
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3512, in dispatch_to_managers
+    return getattr(manager, method)(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
+    return fn(self, *args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
+    raise RuntimeError('A problem was encountered')
+RuntimeError: A problem was encountered
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails
+ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled_unlock_attempt
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled_unlock_attempt ... ok
+ WARNING [ironic_python_agent.extensions.image] GRUB2 will be installed for UEFI on efi partition /dev/fake1 using the install command which does not place Secure Boot signed binaries.
+   ERROR [ironic_python_agent.extensions.image] Installing GRUB2 boot loader to device /dev/fake failed with Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'No md superblock detected'
-Stderr: None
- WARNING [root] Failed to remove partitions on /dev/sdb: Unexpected error while running command.
+Stdout: 'error'
+Stderr: None.
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid ... ok
+   ERROR [ironic_python_agent.extensions.image] Umounting efi system partition failed. Attempted 3 times. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'No md superblock detected'
+Stdout: 'error'
 Stderr: None
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum ... ok
-   ERROR [root] Unable to clean all softraid correctly. Remaining ['/dev/md0']
- WARNING [ironic_python_agent.inspector] Failed to gather vendor id, product id or pci class from PCI device bar: 
- WARNING [ironic_python_agent.inspector] Wrong format of vendor id, product id or pci class in PCI device baz: 
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_failure_blocks_remaining
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_failure_blocks_remaining ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info ... ok
-/bin/sh: 1: mkisofs: not found
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_partition
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_partition ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__install_grub2_uefi_umount_fails ... ok
+/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:57: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_before_utc.
+  self.assertLess(cert.not_valid_before,
+/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_tls_utils.py:59: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc.
+  self.assertGreater(cert.not_valid_after,
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test__generate ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_unlock_fallback_pass
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_unlock_fallback_pass ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid
+ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_ssl
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_with_ssl ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_9660 ... skipped 'mkisofs not installed'
- WARNING [root] RAID device /dev/md1 will not be deleted
- WARNING [root] Software RAID device /dev/md1 is not going to be deleted as its volume name - small - is on the skip list
- WARNING [root] Software RAID device /dev/md1 was not deleted
- WARNING [root] Holder disk /dev/sda contains logical disk on the skip list. Deleting just partitions: ['1']
- WARNING [root] Holder disk /dev/sdb contains logical disk on the skip list. Deleting just partitions: ['1']
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries
-ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries ... ok
-/bin/sh: 1: mkisofs: not found
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_skip_list
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_delete_configuration_skip_list ... ok
- WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device foo: 
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_deploy_steps_exist
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_deploy_steps_exist ... ok
- WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device bar: 
-   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_iso_udf ... skipped 'mkisofs not installed'
-   ERROR [ironic_python_agent.utils] Failed to get list of PCI devices: 
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_erase_disabled
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_erase_disabled ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path
-ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe ... ok
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate
+ironic_python_agent.tests.unit.test_tls_utils.GenerateTestCase.test_generate ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_empty ... ok
+ WARNING [root] Unable to execute `smartctl` utility: boom
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_not_bootable ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success_no_smartctl
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success_no_smartctl ... ok
+POST: /v1/commands {'name': 'do_things', 'params': []}
+GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
+POST: /v1/commands {'name': 'do_things', 'params': {'key': 'value'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands?wait=false {'name': 'do_things', 'params': {'key': 'value'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands?wait=true {'name': 'do_things', 'params': {'key': 'value'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands {}
+GOT:<WrapperTestResponse streamed [400 BAD REQUEST]>
+POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
+GOT:<WrapperTestResponse streamed [200 OK]>
+POST: /v1/commands?wait=false?agent_token=0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 {'name': 'do_things', 'params': {'key': 'value', 'wait': False, 'agent_token': '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789'}}
+GOT:<WrapperTestResponse streamed [401 UNAUTHORIZED]>
+GET: /v1/status None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1/commands/abc123 None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1/commands None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1/foo None
+GOT:<WrapperTestResponse streamed [404 NOT FOUND]>
+GET: / None
+GOT:<WrapperTestResponse streamed [200 OK]>
+GET: /v1 None
+GOT:<WrapperTestResponse streamed [200 OK]>
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__is_bootloader_loaded_uefi_mode ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nosecurity_shred
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nosecurity_shred ... ok
    ERROR [ironic_lib.exception] Exception in string format operation (arguments )
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
     message = self._msg_fmt % kwargs
               ~~~~~~~~~~~~~~^~~~~~~~
 KeyError: 'service'
-   ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: An unknown error occurred erasing block device /dev/sda
  WARNING [ironic_python_agent.agent] Could not get baremetal endpoint from mDNS, will not heartbeat
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
  WARNING [root] Can't find field vendor for device lo in device class net
    ERROR [ironic_python_agent.agent] Neither ipa-api-url nor inspection_callback_urlfound, please check your pxe append parameters.
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
-   ERROR [root] Finding the partition with UUID 11111111-2222-3333-4444-555555555555 on device /dev/fake failed with Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_find_partition ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_notsupported_shred
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_notsupported_shred ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_without_inspection_and_apiurl
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_run_without_inspection_and_apiurl ... ok
- WARNING [root] Failed to invoke secure erase, falling back to shred: Error erasing block device: An unknown error occurred erasing block device /dev/sda
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_command_fail ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_fallback_partuuid ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed_continued
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_failed_continued ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_label ... ok
-   ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: Block device /dev/sda is frozen and cannot be erased
-   ERROR [root] No partition with UUID 11111111-2222-3333-4444-555555555555 found on device /dev/fake
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_frozen
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_frozen ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_no_device_found ... ok
-   ERROR [root] Failed to invoke secure erase, fallback to shred is not enabled: Error erasing block device: Block device /dev/sda already has a security password set
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled ... ok
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid
-ironic_python_agent.tests.unit.test_partition_utils.TestGetPartition.test_partuuid ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_crypto_success
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_crypto_success ... ok
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_given_partition ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_failed
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_failed ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal ... ok
+   ERROR [root] nvme-cli did not return any supported format modes for device: /dev/nvme0n1
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_format_unsupported
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_format_unsupported ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test__uefi_bootloader_with_entry_removal_lenovo ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_userdata_success
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_userdata_success ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -10190,7 +10342,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf43acee8>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4147ab0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -10204,7 +10356,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf43acee8>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4147ab0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -10223,19 +10375,61 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf43acee8>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4147ab0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_by_default
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_by_default ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled_unlock_attempt
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_enabled_unlock_attempt ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_unlock_fallback_pass
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_security_unlock_fallback_pass ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success ... ok
- WARNING [root] Unable to execute `smartctl` utility: boom
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success_no_smartctl
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_ata_success_no_smartctl ... ok
+ WARNING [ironic_python_agent.extensions.image] Boot mode mismatch: target boot mode is bios, current boot mode is uefi. Installing boot loader may fail or work incorrectly.
+ WARNING [ironic_python_agent.extensions.image] efibootmgr is not available in the ramdisk
+   ERROR [ironic_python_agent.extensions.image] Error setting up bootloader. Error 
+   ERROR [root] Command failed: install_bootloader, error: 
+Traceback (most recent call last):
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/base.py", line 174, in run
+    result = self.execute_method(**self.command_params)
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 721, in install_bootloader
+    _install_grub2(device,
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/extensions/image.py", line 167, in _install_grub2
+    root_partition = partition_utils.get_partition(device, uuid=root_uuid)
+                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/partition_utils.py", line 615, in get_partition
+    ipa_utils.rescan_device(device)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 921, in rescan_device
+    execute('partx', '-av', device, attempts=3, delay_on_retry=True)
+  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/utils.py", line 77, in execute
+    return ironic_utils.execute(*cmd, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "<string>", line 3, in do_not_call
+  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
+    return self._mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
+    return self._execute_mock_call(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
+    raise effect
+FileNotFoundError
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure
+ironic_python_agent.tests.unit.extensions.test_image.TestImageExtension.test_install_bootloader_failure ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_0_pass_no_zeroize
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_0_pass_no_zeroize ... ok
+   ERROR [root] Erasing block device /dev/sda failed with error 
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_oserror
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_oserror ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file ... ok
+   ERROR [root] Erasing block device /dev/sda failed with error Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: None
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_processerror
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_processerror ... ok
+   ERROR [root] Failed to move file: /firmware_images/fw1.bin, 
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_file_not_found ... ok
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_uses_internal_info
+ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_uses_internal_info ... ok
    ERROR [ironic_python_agent.ironic_api_client] An error occurred while attempting to discover the available Ironic API versions, falling back to using version 1.31
 Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/eventlet/support/greendns.py", line 463, in resolve
@@ -10295,7 +10489,7 @@
                        ^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 206, in _new_conn
     raise NameResolutionError(self.host, self, e) from e
-urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4c693c0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
+urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection object at 0xf4cd6b40>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)
 
 The above exception was the direct cause of the following exception:
 
@@ -10309,7 +10503,7 @@
   File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 519, in increment
     raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c693c0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4cd6b40>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
 
 During handling of the above exception, another exception occurred:
 
@@ -10328,130 +10522,90 @@
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/usr/lib/python3/dist-packages/requests/adapters.py", line 700, in send
     raise ConnectionError(e, request=request)
-requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4c693c0>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
+requests.exceptions.ConnectionError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0xf4cd6b40>: Failed to resolve 'example.com' ([Errno -2] Name or service not known)"))
  WARNING [ironic_python_agent.agent] Ironic does not support automated TLS
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http ... ok
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_explicitly
 ironic_python_agent.tests.unit.test_agent.TestBaseAgent.test_url_from_mdns_explicitly ... ok
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nosecurity_shred
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nosecurity_shred ... ok
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute
-ironic_python_agent.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_add_partition ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_notsupported_shred
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_notsupported_shred ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_disconnected ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_always_busy ... ok
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once
-ironic_python_agent.tests.unit.test_disk_partitioner.DiskPartitionerTestCase.test_commit_with_device_is_busy_once ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size
-ironic_python_agent.tests.unit.test_disk_utils.GetDeviceByteSizeTestCase.test_get_dev_byte_size ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_crypto_success
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_crypto_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_failed
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_failed ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules ... ok
-   ERROR [root] nvme-cli did not return any supported format modes for device: /dev/nvme0n1
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_format_unsupported
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_format_unsupported ... ok
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success ... ok
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_userdata_success
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_nvme_userdata_success ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success ... ok
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
- WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md1. Skipping
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_0_pass_no_zeroize
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_0_pass_no_zeroize ... ok
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type
-ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found ... ok
-   ERROR [root] Erasing block device /dev/sda failed with error 
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_oserror
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_oserror ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_found_with_dev ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found
-ironic_python_agent.tests.unit.test_inject_files.TestFindPartitionWithPath.test_not_found ... ok
-   ERROR [root] Erasing block device /dev/sda failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_processerror
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_fail_processerror ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_benchmarks ... ok
-   ERROR [ironic_python_agent.utils] failed to run hardware-detect utility: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_execute_failed ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_no_benchmarks ... ok
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_uses_internal_info
-ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_shred_uses_internal_info ... ok
-   ERROR [ironic_python_agent.utils] JSON returned from hardware-detect cannot be decoded: Expecting value: line 1 column 1 (char 0)
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed
-ironic_python_agent.tests.unit.test_inspector.TestCollectExtraHardware.test_parsing_failed ... ok
- WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_failure ... ok
  WARNING [root] Refusing to permit ATA Secure Erase as direct ATA commands via the `smartctl` utility with device /dev/sda do not succeed.
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_fails_security_fallback_to_shred
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_fails_security_fallback_to_shred ... ok
- WARNING [ironic_python_agent.numa_inspector] Failed to get some NUMA information (Error in NUMA node data format: An unexpected error occurred. Please try back later.)
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_nics_dirs ... ok
- WARNING [ironic_python_agent.numa_inspector] Failed to get list of NUMA nodes, NUMA node path does not exist: /sys/devices/system/node/
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_no_numa_dirs ... ok
+   ERROR [root] Failed to open URL data: HTTP Error 500: Internal Error
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_err ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_RESTError_details ... ok
+   ERROR [root] Failed to open URL data: <urlopen error URL error>
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_http_url_err ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_unsupported_shred
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_smartctl_unsupported_shred ... ok
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success
-ironic_python_agent.tests.unit.test_numa_inspector.TestCollectNumaTopologyInfo.test_collect_success ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_classes ... ok
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string
+ironic_python_agent.tests.unit.test_errors.TestErrors.test_error_string ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_virtual_media
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_block_device_virtual_media ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_https ... ok
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_invalid_url_scheme ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st ... ok
+   ERROR [root] Mismatch provided checksum a94e683ea16d9ae44768f0a65942234d for image http://10.10.10.10/firmware_images/fw1.bin
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_checksum ... ok
+ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found
+ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found ... ok
+ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys
+ironic_python_agent.tests.unit.test_utils.TestRemoveKeys.test_remove_keys ... ok
+   ERROR [root] The provided psid MT_0000000227 does not match the image psid MT_0000000228
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_component_flavor ... ok
+   ERROR [root] The provided firmware version 20.34.1012 does not match image firmware version 20.35.1012
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version
+ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicFirmwareBinary.test_nvidia_nic_firmware_binray_mismatch_fw_version ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0 ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency_pool_size
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_concurrency_pool_size ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device ... ok
+ WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express ... ok
-   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
+ WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express_stops_on_safety_failure
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_express_stops_on_safety_failure ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device ... ok
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt ... ok
    ERROR [root] Failed to erase the metadata on device "/dev/sdb". Error: Unexpected error while running command.
 Command: None
 Exit code: -
@@ -10459,14 +10613,34 @@
 Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_error
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_error ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_safety_check
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_metadata_safety_check ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt ... ok
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided ... ok
+   ERROR [ironic_python_agent.utils] foo
+   ERROR [ironic_python_agent.utils] bar
+   ERROR [ironic_python_agent.utils] baz
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found
+ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found ... ok
+   ERROR [ironic_python_agent.utils] foo
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error ... ok
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise
+ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default_protected_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_no_parallel_by_default_protected_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_without_disk
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_devices_without_disk ... ok
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries
+ironic_python_agent.tests.unit.test_utils.TestStreamingClient.test_retries ... ok
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_pstore
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_erase_pstore ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bios_given_nic_name_ok
@@ -10556,14 +10730,8 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_ipmitool_invalid_stdout_format ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_no_ipmi_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_no_ipmi_device ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2 ... ok
- WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 7: 0b0/0b0
- WARNING [ironic_python_agent.format_inspector] Found unknown feature bit in byte 0: 0b0/0b1111
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_not_enabled
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_not_enabled ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_static_address_both
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_static_address_both ... ok
  WARNING [root] Cannot get BMC v6 address: Unexpected error while running command.
@@ -10571,8 +10739,6 @@
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_invalid ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_virt
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_bmc_v6address_virt ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_boot_info_bios
@@ -10585,66 +10751,33 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_clean_steps ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_component_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_component_devices ... ok
-   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_illegal_flags
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_illegal_flags ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_max_mhz_and_flag_fallback
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_max_mhz_and_flag_fallback ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_max_mhz_flag_fallback
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_max_mhz_flag_fallback ... ok
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
- WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_multi
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_multi ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_no_flags
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_cpus_no_flags ... ok
-   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_broken_raid0
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_broken_raid0 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_poisoned_output
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_poisoned_output ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_unexpected_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_unexpected_devices ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_with_nvme
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_with_nvme ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_with_whole_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_holder_disks_with_whole_device ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_arm64_lshw
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_arm64_lshw ... ok
  WARNING [root] Could not get real physical RAM from lshw: 
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_lshw_exception
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_lshw_exception ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_lshw_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_lshw_list ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_bank_size
@@ -10664,8 +10797,6 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
 AttributeError
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_exception_v1
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_exception_v1 ... ok
    ERROR [root] Cannot fetch total memory size using psutil version 5
@@ -10683,16 +10814,12 @@
   File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
     raise effect
 AttributeError
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_exception_v2
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_exception_v2 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_v1
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_v1 ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value ... ok
+   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_v2
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_memory_psutil_v2 ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
@@ -10705,25 +10832,17 @@
  WARNING [root] Can't find field vendor for device sdd in device class block
  WARNING [root] Device /dev/dm-0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/dm-0'
  WARNING [root] Can't find field vendor for device dm-0 in device class block
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256 ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success ... ok
  WARNING [root] Using hint {'vendor': 'basic vendor'} skipping devices: /dev/sda,/dev/sdb
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_complete_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_complete_skip_list ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5 ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Can't find field vendor for device sda in device class block
  WARNING [root] Device /dev/sdb is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sdb'
  WARNING [root] Can't find field vendor for device sdb in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_fails
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_fails ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields ... ok
  WARNING [root] We have identified a multipath device sda, this is being ignored in favor of dm-0 and its related child devices.
  WARNING [root] We have identified a multipath device sda2, this is being ignored in favor of dm-0 and its related child devices.
  WARNING [root] We have identified a multipath device sda3, this is being ignored in favor of dm-0 and its related child devices.
@@ -10740,12 +10859,8 @@
  WARNING [root] Can't find field vendor for device dm-1 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_multipath
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_multipath ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5 ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_no_root_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_no_root_device ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url ... ok
  WARNING [root] We have identified a multipath device sda, this is being ignored in favor of dm-0 and its related child devices.
  WARNING [root] We have identified a multipath device sda2, this is being ignored in favor of dm-0 and its related child devices.
  WARNING [root] We have identified a multipath device sda3, this is being ignored in favor of dm-0 and its related child devices.
@@ -10760,8 +10875,6 @@
  WARNING [root] Can't find field vendor for device sdc in device class block
  WARNING [root] Device /dev/dm-1 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/dm-1'
  WARNING [root] Can't find field vendor for device dm-1 in device class block
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_not_multipath
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_not_multipath ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
@@ -10770,378 +10883,61 @@
  WARNING [root] Can't find field vendor for device sdb in device class block
  WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
  WARNING [root] Can't find field vendor for device md0 in device class block
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_raid
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_raid ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_by_path
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_by_path ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user ... ok
-   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently algo-beyond-milky-way) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used ... ok
-   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_iinfo
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_iinfo ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure ... ok
-   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-sha512-value; verification checksum: invalid-checksum
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_model
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_model ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields ... ok
-   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently unsupported-algorithm) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_name
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_name ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5 ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_defaults
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_defaults ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_no_defaults
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_no_defaults ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_missing_config
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_missing_config ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_wrong_config
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_wrong_config ... ok
-   ERROR [ironic_lib.exception] Exception in string format operation (arguments )
-Traceback (most recent call last):
-  File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
-    message = self._msg_fmt % kwargs
-              ~~~~~~~~~~~~~~^~~~~~~~
-KeyError: 'reason'
-   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_fio
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_fio ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_partner
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_partner ... ok
-   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_role
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_role ... ok
  WARNING [ironic_lib.utils] No device found that matches the root device hints {'model': 'fastable sd131 7', 'wwn': 'fake-wwn', 'serial': 'fake-serial', 'vendor': 'fake-vendor', 'size': 10}
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_no_device_found
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_no_device_found ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception ... ok
-   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
-Command: None
-Exit code: 16
-Stdout: 'Connection timeout'
-Stderr: None
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_rotational
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_rotational ... ok
-   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
-Command: None
-Exit code: 16
-Stdout: 'Connection timeout'
-Stderr: None
-   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
-Command: None
-Exit code: 16
-Stdout: 'Connection refused'
-Stderr: None
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_loop
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_loop ... ok
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_serial
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_serial ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_w_logfile
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_w_logfile ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_unknown_role
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_unknown_role ... ok
-   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer ... ok
-   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer_w_logfile
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer_w_logfile ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size ... ok
-   ERROR [ironic_python_agent.burnin] stress-ng (cpu) failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_default ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_no_stress_ng
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_no_stress_ng ... ok
-   ERROR [root] Failed Prerequisite check. Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestCheckPrereq.test_check_prereq_exception ... ok
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_non_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_non_default ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_not_int
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_not_int ... ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_default ... ok
-   ERROR [root] duplicate settings for device ID 1017 
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_duplicate_device_id ...    ERROR [ironic_python_agent.burnin] stress-ng (vm) failed with error Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: None
-Stderr: None
-ok
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_no_stress_ng
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_no_stress_ng ... ok
-   ERROR [root] There is no deviceID provided for this settings
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_non_default
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_non_default ... ok
-   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_create_settings_map_invalid_firmware_settings_config ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled ... ok
-   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config
-ironic_python_agent.tests.unit.hardware_managers.nvidia.test_nvidia_fw_update.TestNvidiaNicsConfig.test_prepare_nvidia_nic_config ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2 ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw ... ok
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled
-ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled ... ok
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_qcow2_image ... ok
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image
-ironic_python_agent.tests.unit.test_disk_utils.PopulateImageTestCase.test_populate_raw_image ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_str
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_size_str ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_clean_boot_records ... ok
- WARNING [ironic_python_agent.efi_utils] Empty EFI partition detected.
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_empty_partition_by_uuid ... ok
  WARNING [root] Using hint {'vendor': 'fake-vendor'} skipping devices: /dev/sdb
-   ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 131, in manage_uefi
-    utils.execute('mount', efi_partition, efi_partition_mount_point)
-  File "<string>", line 3, in execute
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1198, in _execute_mock_call
-    raise effect
-oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure ... ok
-   ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 185, in manage_uefi
-    _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 351, in _run_efibootmgr
-    boot_records = list(get_boot_records())
-                   ^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 282, in get_boot_records
-    efi_output = utils.execute('efibootmgr', '-v', binary=True)
-                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in execute
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1202, in _execute_mock_call
-    raise result
-oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-   ERROR [ironic_python_agent.efi_utils] Umounting efi system partition failed. Attempted 3 times. Error: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'no umount'
-Stderr: None
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_failure ... ok
-ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls
-ironic_python_agent.tests.unit.test_agent.TestFromConfig.test_override_urls ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders ... ok
-   ERROR [ironic_python_agent.efi_utils] Could not configure UEFI boot on device /dev/fake: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 185, in manage_uefi
-    _run_efibootmgr(valid_efi_bootloaders, efi_dev, efi_part,
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 351, in _run_efibootmgr
-    boot_records = list(get_boot_records())
-                   ^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/efi_utils.py", line 282, in get_boot_records
-    efi_output = utils.execute('efibootmgr', '-v', binary=True)
-                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "<string>", line 3, in execute
-  File "/usr/lib/python3.12/unittest/mock.py", line 1139, in __call__
-    return self._mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1143, in _mock_call
-    return self._execute_mock_call(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/usr/lib/python3.12/unittest/mock.py", line 1202, in _execute_mock_call
-    raise result
-oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.
-Command: None
-Exit code: -
-Stdout: 'boom'
-Stderr: None
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_efi_bootloaders_no_csv ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_failure_after_mount ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__get_windows_efi_bootloaders ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders
-ironic_python_agent.tests.unit.test_efi_utils.TestGetEfiBootloaders.test__no_efi_bootloaders ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_found_csv ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_get_boot_records ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_both_succeed ... ok
  WARNING [ironic_lib.utils] No device found that matches the root device hints {'wwn': 'fake-wwn'}
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_no_partition ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_skip_list ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vdi_invalid ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_nvme_device ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_both_succeed ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_vendor
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_vendor ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_ok ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_wwn
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_root_device_hints_wwn ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_software_raid ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_skip_list_non_exist
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_os_install_device_skip_list_non_exist ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_generic_method_only ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_just_raids
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_just_raids ... ok
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk
-ironic_python_agent.tests.unit.test_efi_utils.TestManageUefi.test_wholedisk ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_no_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_no_skip_list ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test ... ok
  WARNING [root] Using hint {'name': '/dev/sdj'} skipping devices: /dev/sdj
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_with_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_skip_list_from_node_block_devices_with_skip_list ... ok
- WARNING [ironic_python_agent.inspector] failed to get system journal
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail
-ironic_python_agent.tests.unit.test_inspector.TestCollectLogs.test_fail ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices ... ok
  WARNING [root] Could not retrieve vendor info from lshw: Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_fails ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test__get_actual_component_devices_broken_raid0 ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_failure
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_failure ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_lshw_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_system_vendor_info_lshw_list ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_create_device ... ok
- WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_usb_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_get_usb_devices ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_fail_read_device ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_mainline_only ... ok
- WARNING [ironic_python_agent.raid_utils] Found /dev/sdb1 to be missing from /dev/md0 ... re-adding!
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_ipmi_device_exists
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_ipmi_device_exists ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_missing_device ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_create_raid_device_with_volume_name ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: 
  WARNING [root] Device /dev/sdb is not supported by pyudev, skipping... Error: No block device with number 1234
  WARNING [root] Device /dev/sdc is inaccessible, skipping... Error: 
@@ -11149,60 +10945,23 @@
  WARNING [root] Device /dev/dm-0 is inaccessible, skipping... Error: 
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_get_volume_name_of_raid_device_invalid ... ok
  WARNING [root] We have identified a multipath device sdd, this is being ignored in favor of dm-0 and its related child devices.
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_gpt ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_manager_method_not_found ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_all_serial
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_all_serial ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: 
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_bios_msdos ... ok
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_hctl_fail
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_hctl_fail ... ok
-   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf41e4d38>: A problem was encountered
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3468, in dispatch_to_all_managers
-    response = getattr(manager, method)(*args, **kwargs)
-               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
-    return fn(self, *args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
-    raise RuntimeError('A problem was encountered')
-RuntimeError: A problem was encountered
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_dispatch_to_all_managers_method_fails ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_only_udev
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_only_udev ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_generic_method_only ... ok
  WARNING [root] We have identified a multipath device sdd, this is being ignored in favor of dm-0 and its related child devices.
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_udev
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_all_block_device_with_udev ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_efi_provided ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_fails ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_no_skip_list
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_no_skip_list ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found
-ironic_python_agent.tests.unit.test_raid_utils.TestRaidUtils.test_prepare_boot_partitions_for_softraid_uefi_gpt_esp_not_found ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_mainline_method_only ... ok
-ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives
-ironic_python_agent.tests.unit.test_utils.TestUnmountOfConfig.test__unmount_any_config_drives ... ok
  WARNING [root] Using hint {'name': '/dev/sdj'} skipping devices: /dev/sdj
  WARNING [root] Using hint {'name': '/dev/hdaa'} skipping devices: /dev/hdaa
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_complete_skip_list
@@ -11214,28 +10973,15 @@
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_check_skip_list_with_skip_list_non_exist ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_including_partitions
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_block_devices_including_partitions ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_manager_method_not_found ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_hardware_info
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_list_hardware_info ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_normal_vs_enhanced_security_erase
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_normal_vs_enhanced_security_erase ... ok
-   ERROR [root] Unexpected error dispatching unexpected_fail to manager <ironic_python_agent.tests.unit.test_multi_hardware.FakeMainlineHardwareManager object at 0xf52cce58>: A problem was encountered
-Traceback (most recent call last):
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/hardware.py", line 3512, in dispatch_to_managers
-    return getattr(manager, method)(*args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 32, in wrapper
-    return fn(self, *args, **kwargs)
-           ^^^^^^^^^^^^^^^^^^^^^^^^^
-  File "/build/reproducible-path/ironic-python-agent-9.14.0/ironic_python_agent/tests/unit/test_multi_hardware.py", line 101, in unexpected_fail
-    raise RuntimeError('A problem was encountered')
-RuntimeError: A problem was encountered
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_service_steps_exist
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_service_steps_exist ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails
-ironic_python_agent.tests.unit.test_multi_hardware.TestMultipleHardwareManagerLoading.test_method_fails ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run_no_tls ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
  WARNING [root] Can't find field vendor for device sda in device class block
@@ -11247,9 +10993,13 @@
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_MAX_MAX
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_MAX_MAX ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_disk_label_gpt ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_gpt_with_prep ... ok
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
  WARNING [root] Can't find field vendor for device sda in device class block
@@ -11261,8 +11011,20 @@
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_duplicate_volume_name
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_duplicate_volume_name ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_gpt_bios ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_local_boot_uefi ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_no_of_raids
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_no_of_raids ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_mbr_with_prep ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_ephemeral ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_iscsi_device ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
@@ -11273,20 +11035,20 @@
  WARNING [root] Device /dev/md0 is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/md0'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
  WARNING [root] Can't find field vendor for device md0 in device class block
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_local_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_raid_level
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_invalid_raid_level ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_exceeds_2TB_nvme ... ok
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhd_invalid ... ok
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device
+ironic_python_agent.tests.unit.test_disk_utils.MakePartitionsTestCase.test_make_partitions_with_nvme_device ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_no_configuration
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_no_configuration ... ok
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers ... ok
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1 ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB ... ok
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail
+ironic_python_agent.tests.unit.test_hardware.TestHardwareManagerLoading.test_get_managers_detail ... ok
  WARNING [root] Path /dev/disk/by-path is inaccessible, /dev/disk/by-path/* version of block device name is unavailable Cause: [Errno 2] No such file or directory: '/dev/disk/by-path'
  WARNING [root] Device /dev/sda is inaccessible, skipping... Error: [Errno 2] No such file or directory: '/dev/sda'
  WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
@@ -11299,84 +11061,346 @@
  WARNING [root] Can't find field vendor for device md0 in device class block
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1_raidN
 ironic_python_agent.tests.unit.test_hardware.TestGenericHardwareManager.test_validate_configuration_valid_raid1_raidN ... ok
-   ERROR [root] Encountered issue attempting to validate the supplied configuration drive. Error: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__check_for_iscsi_no_iscsi ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test__load_ipmi_modules ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_missing ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive ... ok
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda1. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_partuuid_success ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_status_code ... ok
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_bad_url ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_error ... ok
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sda. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/sdb. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md0. Skipping
+ WARNING [root] Could not find the SCSI address (HCTL) for device /dev/md1. Skipping
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_success_raid ... ok
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type
+ironic_python_agent.tests.unit.test_hardware.TestModuleFunctions.test_list_all_block_devices_wrong_block_type ... ok
+ WARNING [root] Mismatched hardware managers versions. Agent version: {'specific': '1'}, node version: {'not_specific': '1'}
+ironic_python_agent.tests.unit.test_hardware.TestVersions.test_check_versions
+ironic_python_agent.tests.unit.test_hardware.TestVersions.test_check_versions ... ok
+ironic_python_agent.tests.unit.test_hardware.TestVersions.test_get_current_versions
+ironic_python_agent.tests.unit.test_hardware.TestVersions.test_get_current_versions ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_base64_string ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_binary ... ok
+ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering
+ironic_python_agent.tests.unit.test_multi_hardware_clean_steps.TestMultipleHardwareManagerCleanSteps.test_clean_step_ordering ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_gzip_error ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_insecure ... ok
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl
+ironic_python_agent.tests.unit.test_partition_utils.GetConfigdriveTestCase.test_get_configdrive_ssl ... ok
+   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 2: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Error downloading image: Download of image fake_id failed: Timed out reading next chunk from webserver
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_2nd ... ok
+   ERROR [ironic_python_agent.extensions.standby] Timeout reached waiting for a chunk of data from a remote server.
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout ... ok
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 0 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 1 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 2 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 3 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 4 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 5 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 6 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 7 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ WARNING [ironic_python_agent.extensions.standby] Image download failed, 8 of 9: Error downloading image: Download of image fake_id failed: Unable to write image to device /dev/foo. Error: Surprise!!!1!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_write_error ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync ... ok
+   ERROR [ironic_python_agent.extensions.standby] Flushing file system buffers failed. Error: Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
+Stdout: None
 Stderr: None
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpuc14oo0e/tmpt37q2_fy, error: [Errno 21] Is a directory: '/tmp/tmpuc14oo0e/tmpt37q2_fy'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_failed ... ok
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpg0t5453g/tmp65yolhhb, error: [Errno 21] Is a directory: '/tmp/tmpg0t5453g/tmp65yolhhb'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__does_config_drive_work ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test__create_partition_mbr_disk_under_2TB_nvme ... ok
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpq7na1coj/tmpkcledf3z, error: [Errno 21] Is a directory: '/tmp/tmpq7na1coj/tmpkcledf3z'
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpq7na1coj/tmpawrcwn1a, error: [Errno 21] Is a directory: '/tmp/tmpq7na1coj/tmpawrcwn1a'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_error_counting ... ok
-   ERROR [root] We were unable to make a new filesystem for the configuration drive. Error: Unexpected error while running command.
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_sync_error ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_empty_urls ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_invalid_urls ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_legacy_md5_checksum_enabled ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_missing_field ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_algo ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_no_hash_value ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_sha256 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_ignore_none_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_with_new_hash_fields ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_success_without_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_validate_image_info_url ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_password ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_empty_user ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_password ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_basic_auth_creds_none_user ... ok
+   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently algo-beyond-milky-way) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_fails_if_unknown_is_used ... ok
+   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-checksum; verification checksum: invalid-checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure ... ok
+   ERROR [ironic_python_agent.extensions.standby] Image failed to verify against checksum. location: /foo/bar; image ID: fake_id; image checksum: fake-sha512-value; verification checksum: invalid-checksum
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_with_new_hash_fields ... ok
+   ERROR [ironic_python_agent.extensions.standby] Unable to verify image fake_id with available checksums. Please make sure the specified 'os_hash_algo' (currently unsupported-algorithm) is supported by this ramdisk, or provide a md5 checksum via the 'checksum' field
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_failure_without_fallback ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_md5_fallback ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_with_new_hash_fields ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_verify_image_success_without_md5 ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_fails ... ok
+   ERROR [ironic_lib.exception] Exception in string format operation (arguments )
+Traceback (most recent call last):
+  File "/usr/lib/python3/dist-packages/ironic_lib/exception.py", line 134, in __init__
+    message = self._msg_fmt % kwargs
+              ~~~~~~~~~~~~~~^~~~~~~~
+KeyError: 'reason'
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_image_gpt_fails ... ok
+   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception ... ok
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_exception_image_mb ... ok
+   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid ... ok
+   ERROR [ironic_python_agent.disk_utils] Failed to fix GPT partition on disk /dev/sda for node None. Error: Don't call ironic_lib.utils.execute() / processutils.execute() or similar functions in tests!
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_write_partition_image_no_node_uuid_uefi ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_busybox ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_dev_becomes_avail_psmisc ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_busybox ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_device_in_use_psmisc ... ok
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_device ... ok
+ WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: 'fake'
+ WARNING [ironic_python_agent.disk_utils] Failed to check the device fake-dev with fuser: Unexpected error while running command.
+Command: None
+Exit code: -
+Stdout: None
+Stderr: 'fake'
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser
+ironic_python_agent.tests.unit.test_disk_utils.WaitForDisk.test_wait_for_disk_to_become_available_no_fuser ... ok
+ WARNING [ironic_python_agent.efi_utils] Invalid sgdisk line: I am a teaport
+ WARNING [ironic_python_agent.efi_utils] No UUID information provided in sgdisk output for partition 1 on device /dev/fake
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_broken ... ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok
+ironic_python_agent.tests.unit.test_efi_utils.TestGetPartitionPathByNumber.test_ok ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_delete_not_exists ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_modes_exists ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_on ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_plain_content_with_owner_and_group ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url ... ok
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting
+ironic_python_agent.tests.unit.test_inject_files.TestInjectOne.test_url_formatting ... ok
+ WARNING [ironic_python_agent.inspector] Failed to gather vendor id, product id or pci class from PCI device bar: 
+ WARNING [ironic_python_agent.inspector] Wrong format of vendor id, product id or pci class in PCI device baz: 
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_bad_pci_device_info ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success ... ok
+ WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device foo: 
+ WARNING [ironic_python_agent.inspector] Failed to gather numa_node id from PCI device bar: 
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_success_numa_ioerror ... ok
+   ERROR [ironic_python_agent.utils] Failed to get list of PCI devices: 
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path
+ironic_python_agent.tests.unit.test_inspector.TestCollectPciDevicesInfo.test_wrong_path ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_defaults
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_defaults ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_no_defaults
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_no_defaults ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_missing_config
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_missing_config ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_wrong_config
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_pairing_raise_wrong_config ... ok
+   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: 'boom'
 Stderr: None
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpv7mpfkpt/tmpng4n186o, error: [Errno 21] Is a directory: '/tmp/tmpv7mpfkpt/tmpng4n186o'
- WARNING [ironic_lib.utils] Failed to unlink /tmp/tmpv7mpfkpt/tmp0tr0asf_, error: [Errno 21] Is a directory: '/tmp/tmpv7mpfkpt/tmp0tr0asf_'
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_fails_once_invalid ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_conf_drive_sz_exceed ... ok
- WARNING [root] We were unable to examine the configuration drive, bypassing. Error: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_fio
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_fio ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_partner
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_partner ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_role
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_no_role ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader ... ok
+   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
+Command: None
+Exit code: 16
+Stdout: 'Connection timeout'
+Stderr: None
+   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
+Command: None
+Exit code: 16
+Stdout: 'Connection timeout'
+Stderr: None
+   ERROR [ironic_python_agent.burnin] fio (network) failed with error Unexpected error while running command.
+Command: None
+Exit code: 16
+Stdout: 'Connection refused'
+Stderr: None
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_loop
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_loop ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_w_logfile
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_reader_w_logfile ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_unknown_role
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_unknown_role ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer_w_logfile
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_writer_w_logfile ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_default ... ok
+   ERROR [ironic_python_agent.burnin] stress-ng (cpu) failed with error Unexpected error while running command.
 Command: None
 Exit code: -
-Stdout: 'boom'
+Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail
-ironic_python_agent.tests.unit.test_partition_utils.TestConfigDriveTestRecovery.test__try_build_fat32_config_drive_graceful_fail ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_exists
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_exists ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_no_device ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok
-ironic_python_agent.tests.unit.test_raid_utils.TestGetNextFreeRaidDevice.test_ok ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt ... ok
-ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute
-ironic_python_agent.tests.unit.test_utils.ExecuteTestCase.test_execute ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_use_vfat ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_gpt_with_fallback ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_num_parts_exceed ... ok
-   ERROR [root] Failed to create config drive on disk /dev/fake for node 12345678-1234-1234-1234-1234567890abcxyz. Error: Unexpected error while running command.
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_no_stress_ng
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_no_stress_ng ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_non_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_cpu_non_default ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_default ... ok
+   ERROR [ironic_python_agent.burnin] stress-ng (vm) failed with error Unexpected error while running command.
 Command: None
 Exit code: -
 Stdout: None
 Stderr: None
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_exc ... ok
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail
-ironic_python_agent.tests.unit.test_partition_utils.CreateConfigDriveTestCases.test_create_partition_part_create_fail ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_doesnt_exist_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_disabled ... ok
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_safe
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_safe ... ok
-   ERROR [ironic_python_agent.utils] foo
-   ERROR [ironic_python_agent.utils] bar
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_unsafe
-ironic_python_agent.tests.unit.test_qemu_img.ImageInfoTestCase.test_image_info_path_exists_unsafe ... ok
-   ERROR [ironic_python_agent.utils] baz
-   ERROR [ironic_python_agent.utils] foo
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_get_error ... ok
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise
-ironic_python_agent.tests.unit.test_utils.TestFailures.test_raise ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_no_stress_ng
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_no_stress_ng ... ok
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_non_default
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_stress_ng_vm_non_default ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_4096 ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_ebr ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_sgdisk_fail ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_tiny_partition ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_fail ... ok
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force
+ironic_python_agent.tests.unit.test_disk_utils.DestroyMetaDataTestCase.test_destroy_disk_metadata_wipefs_not_support_force ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_exc ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_not_required ... ok
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required
+ironic_python_agent.tests.unit.test_disk_utils.FixGptStructsTestCases.test_fix_gpt_structs_fix_required ... ok
+   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_mismatch_but_disabled ... ok
+   ERROR [ironic_python_agent.disk_utils] Security: Detected image format was qcow3, but only raw, qcow2 are allowed
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_format_type_disallowed ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_qcow2 ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_happy_raw ... ok
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled
+ironic_python_agent.tests.unit.test_disk_utils.GetAndValidateImageFormat.test_safety_check_fail_but_disabled ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_cache_hardware_info ... ok
+ WARNING [ironic_python_agent.inspector] no suitable root device detected
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_no_root_disk ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok
+ironic_python_agent.tests.unit.test_inspector.TestCollectDefault.test_ok ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error ... ok
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx ... ok
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx_invalid
@@ -11385,12 +11409,50 @@
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk ... ok
 5+0 records in
 5+0 records out
-5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.092793 s, 56.5 MB/s
+5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0190185 s, 276 MB/s
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed ... ok
+ WARNING [ironic_python_agent.inspector] Connection error when accessing url1, trying the next URL. Error: 
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_several_urls
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_several_urls ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_ok ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_send_failure
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_send_failure ... ok
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_api_url
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_api_url ... ok
+ WARNING [ironic_python_agent.inspector] Connection error when accessing http://url1/v1/continue_inspection, trying the next URL. Error: 
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_several_api_urls
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_several_api_urls ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_flags_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails_disabled ... ok
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled
+ironic_python_agent.tests.unit.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_disabled ... ok
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit ... ok
 5+0 records in
 5+0 records out
-5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0489254 s, 107 MB/s
+5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0194242 s, 270 MB/s
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized ... ok
    ERROR [ironic_python_agent.format_inspector] Format inspector failed, aborting: Wrong descriptor location
@@ -11414,61 +11476,50 @@
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_invalid_type ... ok
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_stream_optimized
 ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_stream_optimized ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_empty ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_in_param ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_invalid_type_on_node ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_ok ... ok
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false
-ironic_python_agent.tests.unit.test_inject_files.TestInjectFiles.test_verify_false ... ok
-   ERROR [ironic_python_agent.inspector] inspector url error 400: <MagicMock name='post().content.decode()' id='4104874552'>, proceeding with lookup
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_error ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed ... ok
- WARNING [ironic_python_agent.inspector] Connection error when accessing url1, trying the next URL. Error: 
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_several_urls
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_several_urls ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_ok ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_send_failure
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_send_failure ... ok
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_api_url
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_api_url ... ok
- WARNING [ironic_python_agent.inspector] Connection error when accessing http://url1/v1/continue_inspection, trying the next URL. Error: 
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_several_api_urls
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_use_several_api_urls ... ok
-ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found
-ironic_python_agent.tests.unit.test_multi_hardware.TestNoHardwareManagerLoading.test_no_managers_found ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_esp_raid ... ok
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid
-ironic_python_agent.tests.unit.test_raid_utils.TestFindESPRAID.test_no_esp_raid ... ok
+ironic-python-agent: line 1.
+ironic-python-agent: line 2 message
+ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger
+ironic_python_agent.tests.unit.test_utils.TestCheckEarlyLogging.test_early_logging_goes_to_logger ... ok
+ironic-python-agent: Copying configuration from /tmp/tmp4oje81r2/etc/ironic-python-agent to /etc/ironic-python-agent
+ironic-python-agent: Copying configuration from /tmp/tmp4oje81r2/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy ... ok
+ironic-python-agent: Copying configuration from /tmp/tmp20wdlsur/etc/ironic-python-agent to /etc/ironic-python-agent
+ironic-python-agent: Copying configuration from /tmp/tmp20wdlsur/etc/ironic-python-agent.d to /etc/ironic-python-agent.d
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_copy_mounted ... ok
+ironic-python-agent: /some/path/etc/ironic-python-agent not found
+ironic-python-agent: /some/path/etc/ironic-python-agent.d not found
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_mounted_no_files ... ok
+ironic-python-agent: /tmp/tmp35s5l4tw/etc/ironic-python-agent not found
+ironic-python-agent: /tmp/tmp35s5l4tw/etc/ironic-python-agent.d not found
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_files ... ok
+ironic-python-agent: No virtual media device detected
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_no_vmedia ... ok
+ironic-python-agent: Cannot use configuration from virtual media as the agent was not booted from virtual media.
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia
+ironic_python_agent.tests.unit.test_utils.TestCopyConfigFromVmedia.test_vmedia_found_not_booted_from_vmedia ... ok
 
 ----------------------------------------------------------------------
-Ran 1023 tests in 227.452s
+Ran 1023 tests in 39.511s
 
 OK (skipped=5)
 + stestr slowest
 Test id                                                                                                                            Runtime (s)
 ---------------------------------------------------------------------------------------------------------------------------------  -----------
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized      85.537
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit                       76.863
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx                                                24.146
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries                                              4.025
-ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout   3.173
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st                                        3.068
-ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout                                         2.047
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error                                 2.044
-ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed                             2.032
-ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_qcow2                                                1.919
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized      13.797
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit                       13.587
+ironic_python_agent.tests.unit.test_format_inspector.TestFormatInspectors.test_vhdx                                                 5.121
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries                                              4.012
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_pair_1st                                        3.018
+ironic_python_agent.tests.unit.extensions.test_standby.TestStandbyExtension.test_stream_raw_image_onto_device_socket_read_timeout   3.017
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retry_on_50X_and_succeed                             2.011
+ironic_python_agent.tests.unit.test_burnin.TestBurnin.test_fio_network_dynamic_find_timeout                                         2.011
+ironic_python_agent.tests.unit.test_inspector.TestCallInspector.test_inspector_retries_on_50X_error                                 2.007
+ironic_python_agent.tests.unit.test_agent.TestAgentStandalone.test_run                                                              1.097
 + rm -rf .stestr
 mkdir -p /build/reproducible-path/ironic-python-agent-9.14.0/debian/ironic-python-agent/etc/ironic-python-agent
 PYTHONPATH=/build/reproducible-path/ironic-python-agent-9.14.0/debian/tmp/usr/lib/python3/dist-packages oslo-config-generator \
@@ -11496,8 +11547,8 @@
 make[1]: pyversions: No such file or directory
 py3versions: no X-Python3-Version in control file, using supported versions
 dh_python3 --shebang=/usr/bin/python3
-I: dh_python3 tools:113: replacing shebang in debian/ironic-python-agent/usr/bin/ironic-collect-introspection-data
 I: dh_python3 tools:113: replacing shebang in debian/ironic-python-agent/usr/bin/ironic-python-agent
+I: dh_python3 tools:113: replacing shebang in debian/ironic-python-agent/usr/bin/ironic-collect-introspection-data
 make[1]: Leaving directory '/build/reproducible-path/ironic-python-agent-9.14.0'
    debian/rules override_dh_installinit
 make[1]: Entering directory '/build/reproducible-path/ironic-python-agent-9.14.0'
@@ -11510,20 +11561,21 @@
 	cat /usr/share/openstack-pkg-tools/init-script-template >>$MYINIT.init ; \
 	pkgos-gen-systemd-unit $i ; \
 done
-+ ls -1 debian/ironic-python-agent.init.in
-+ sed s/.init.in//
-+ echo debian/ironic-python-agent.init.in
+++ ls -1 debian/ironic-python-agent.init.in
++ for i in `ls -1 debian/*.init.in`
+++ echo debian/ironic-python-agent.init.in
+++ sed s/.init.in//
 + MYINIT=debian/ironic-python-agent
 + cp debian/ironic-python-agent.init.in debian/ironic-python-agent.init
 + cat /usr/share/openstack-pkg-tools/init-script-template
 + pkgos-gen-systemd-unit debian/ironic-python-agent.init.in
-/usr/bin/pkgos-gen-systemd-unit: 22: debian/ironic-python-agent.init.in: modprobe: not found
+debian/ironic-python-agent.init.in: line 22: modprobe: command not found
 # If there's a service.in file, use that one instead of the generated one
 set -e ; set -x ; for i in `ls -1 debian/*.service.in`; do \
 	MYPKG=`echo $i | sed s/.service.in//` ; \
 	cp $MYPKG.service.in $MYPKG.service ; \
 done
-+ ls -1 debian/*.service.in
+++ ls -1 'debian/*.service.in'
 ls: cannot access 'debian/*.service.in': No such file or directory
 # Generate the systemd unit if there's no already existing .service.in
 set -e ; set -x ; for i in `ls debian/*.init.in` ; do \
@@ -11532,13 +11584,14 @@
 		pkgos-gen-systemd-unit $i ; \
 	fi \
 done
-+ ls debian/ironic-python-agent.init.in
-+ echo debian/ironic-python-agent.init.in
-+ sed s/.init.in/.service.in/
+++ ls debian/ironic-python-agent.init.in
++ for i in `ls debian/*.init.in`
+++ echo debian/ironic-python-agent.init.in
+++ sed s/.init.in/.service.in/
 + MYINIT=debian/ironic-python-agent.service.in
-+ [ -e debian/ironic-python-agent.service.in ]
++ '[' -e debian/ironic-python-agent.service.in ']'
 + pkgos-gen-systemd-unit debian/ironic-python-agent.init.in
-/usr/bin/pkgos-gen-systemd-unit: 22: debian/ironic-python-agent.init.in: modprobe: not found
+debian/ironic-python-agent.init.in: line 22: modprobe: command not found
 dh_installinit --error-handler=true
 make[1]: Leaving directory '/build/reproducible-path/ironic-python-agent-9.14.0'
    debian/rules override_dh_installsystemd
@@ -11552,20 +11605,21 @@
 	cat /usr/share/openstack-pkg-tools/init-script-template >>$MYINIT.init ; \
 	pkgos-gen-systemd-unit $i ; \
 done
-+ ls -1 debian/ironic-python-agent.init.in
-+ sed s/.init.in//
-+ echo debian/ironic-python-agent.init.in
+++ ls -1 debian/ironic-python-agent.init.in
++ for i in `ls -1 debian/*.init.in`
+++ echo debian/ironic-python-agent.init.in
+++ sed s/.init.in//
 + MYINIT=debian/ironic-python-agent
 + cp debian/ironic-python-agent.init.in debian/ironic-python-agent.init
 + cat /usr/share/openstack-pkg-tools/init-script-template
 + pkgos-gen-systemd-unit debian/ironic-python-agent.init.in
-/usr/bin/pkgos-gen-systemd-unit: 22: debian/ironic-python-agent.init.in: modprobe: not found
+debian/ironic-python-agent.init.in: line 22: modprobe: command not found
 # If there's a service.in file, use that one instead of the generated one
 set -e ; set -x ; for i in `ls -1 debian/*.service.in`; do \
 	MYPKG=`echo $i | sed s/.service.in//` ; \
 	cp $MYPKG.service.in $MYPKG.service ; \
 done
-+ ls -1 debian/*.service.in
+++ ls -1 'debian/*.service.in'
 ls: cannot access 'debian/*.service.in': No such file or directory
 # Generate the systemd unit if there's no already existing .service.in
 set -e ; set -x ; for i in `ls debian/*.init.in` ; do \
@@ -11574,13 +11628,14 @@
 		pkgos-gen-systemd-unit $i ; \
 	fi \
 done
-+ ls debian/ironic-python-agent.init.in
-+ sed s/.init.in/.service.in/
-+ echo debian/ironic-python-agent.init.in
+++ ls debian/ironic-python-agent.init.in
++ for i in `ls debian/*.init.in`
+++ echo debian/ironic-python-agent.init.in
+++ sed s/.init.in/.service.in/
 + MYINIT=debian/ironic-python-agent.service.in
-+ [ -e debian/ironic-python-agent.service.in ]
++ '[' -e debian/ironic-python-agent.service.in ']'
 + pkgos-gen-systemd-unit debian/ironic-python-agent.init.in
-/usr/bin/pkgos-gen-systemd-unit: 22: debian/ironic-python-agent.init.in: modprobe: not found
+debian/ironic-python-agent.init.in: line 22: modprobe: command not found
 dh_installsystemd
 make[1]: Leaving directory '/build/reproducible-path/ironic-python-agent-9.14.0'
    dh_installlogrotate -O--buildsystem=pybuild
@@ -11612,12 +11667,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: not including original source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/53651/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/56152 and its subdirectories
-I: Current time: Sat Jan  4 02:47:49 -12 2025
-I: pbuilder-time-stamp: 1736002069
+I: removing directory /srv/workspace/pbuilder/53651 and its subdirectories
+I: Current time: Sat Feb  7 11:13:49 +14 2026
+I: pbuilder-time-stamp: 1770412429